2011-10-22 65 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

在这种情况下,你不必关心你的框架/应用程序自动加载器。