2011-10-22 67 views
1

我寫API實現,我的主要API類有__call()魔術方法:延遲加載,我正在做對嗎?

public function __call($name, $params) 
{ 
    if (in_array($name, $this->resources)) 
    { 
     require_once APPPATH . 'resources' . DIRECTORY_SEPARATOR . $name . '.php'; 

     $class_name = ucfirst($name); 

     return new $class_name($params); 
    } 
} 

所以在我的應用程序基本上,如果我寫

$api->product()->get($product_id); 
// or 
$api->product()->post($product); 

資源/ product.php文件包括,創建產品對象並調用適當的方法。這是一個做延遲加載的正確方法嗎?有沒有更好的方法來實現API?

+4

您可以使用PHP的本地自動加載功能更加簡化它,請參閱http://php.net/manual/en/language.oop5.autoload.php –

+1

您不僅可以用@Peka的建議來簡化此操作,但你*應該*確實這樣做,因爲集中式自動加載器更容易維護。 – Gordon

+0

我正在使用的框架已經自動加載,我不覺得修改它很舒服。 – arnaslu

回答

0

之後您可以添加自己的自動加載器。如果「第一」自動裝載機沒有找到文件,你可能有第二個邏輯或第三個邏輯... spl_autoload_register(); @http://www.php.net/manual/en/function.spl-autoload-register.php

在這種情況下,你不必關心你的框架/應用程序自動加載器。