延迟加载,我这样做对吗?
我正在编写 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);
resources/product.php 文件,则创建 Product 对象并调用适当的方法。这是延迟加载的正确方法吗?是否有更好的方法来实现 API?
I'm writing API implementation and my main API class has __call() magic method:
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);
}
}
So basically in my application if I write
$api->product()->get($product_id);
// or
$api->product()->post($product);
resources/product.php file is included, Product object created and appropriate method called. Is this a correct way to do lazy loading and is there a better way to implement an API?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
之后您可以添加自己的自动加载器。如果“第一个”自动加载器找不到文件,您可能有第二个逻辑或第三个......
spl_autoload_register(); @http://www.php.net/manual/en/function.spl-autoload-register.php
在这种情况下,您不必关心您的框架/应用程序自动加载器。
You can add your own autoloader afterwards. If "first" autoloader does not find file you have maybe a second logic for it or a third...
spl_autoload_register(); @http://www.php.net/manual/en/function.spl-autoload-register.php
In that situation you dont have to care about your frameworks/applications autoloader.