延迟加载,我正在做对吗?
问题描述:
我写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?
答
之后您可以添加自己的自动加载器。如果“第一”自动装载机没有找到文件,你可能有第二个逻辑或第三个逻辑... spl_autoload_register(); @http://www.php.net/manual/en/function.spl-autoload-register.php
在这种情况下,你不必关心你的框架/应用程序自动加载器。
您可以使用PHP的本地自动加载功能更加简化它,请参阅http://php.net/manual/en/language.oop5.autoload.php –
您不仅可以用@Peka的建议来简化此操作,但你*应该*确实这样做,因为集中式自动加载器更容易维护。 – Gordon
我正在使用的框架已经自动加载,我不觉得修改它很舒服。 – arnaslu