延迟加载,我这样做对吗?

发布于 2024-12-11 11:27:17 字数 564 浏览 0 评论 0原文

我正在编写 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

傲娇萝莉攻 2024-12-18 11:27:18

之后您可以添加自己的自动加载器。如果“第一个”自动加载器找不到文件,您可能有第二个逻辑或第三个......
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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文