php 构造函数的使用

发布于 2022-09-12 02:21:38 字数 1172 浏览 23 评论 0

<?php

namespace app\api\controller\f;
use app\api\model\ModelStackBook;

class IndexDemo extends Demo
{
    protected $ModelStackBook;

    public function __construct()
    {
        parent::__construct();
        $this->ModelStackBook = new ModelStackBook();
    }

    public function index()
    {
        $res = $this->ModelStackBook->find(1);
        return api_success($res);
    }

    public function index1()
    {
        $res = $this->ModelStackBook->find(1);
        return api_success($res);
    }
}
<?php

namespace app\api\controller\f;
use app\api\model\ModelStackBook;

class IndexDemo extends Demo
{
    
    public function index()
    {
        $ModelStackBook = new ModelStackBook();
        $res = $ModelStackBook->find(1);
        return api_success($res);
    }

    public function index1()
    {
        $ModelStackBook = new ModelStackBook();
        $res = $ModelStackBook->find(1);
        return api_success($res);
    }
}

在项目中会用到 控制器 ModelStackBook 每次都去new 一遍, 还是直接使用构造函数。两者的差别在哪里?从代码量上看,如果多次调用的话 使用构造函数,代码更加简洁,易维护。其他深层次的方面,会有区别吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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

评论(2

素染倾城色 2022-09-19 02:21:38

可继承性吧,构造函数中会直接被调用。在其他PHP中可以直接使用的话,更方便。
我感觉应该是这样的吧。

画中仙 2022-09-19 02:21:38

都不是很好,如果非要选的话,第一种相对要好点儿,因为如果你以后有变更的话,只用修改构造函数处就好了,但是如果你用了依赖注入容器的话,就可以先定义接口再实现,然后在容器上绑定类到接口,这样,你只需要修改容器绑定就好了,代码可以不用动。

// 定义一个接口,模型实现接口,然后在容器上绑定 ,如果以后会有变动,就可以只是变这里的绑定
$app->bind('ModelStackBookInterface', new ModelStackBook());
// 上一行代码不在这个文件中,在容器注册位置,不同框架注入的位置不一样。
// 在构造方法中注入接口
public function __construct(ModelStackBookInterface $modelStackBook)
{
    parent::__construct();
    $this->ModelStackBook = $modelStackBook;
}

当然,如果你觉得太麻烦,也可以直接不绑定 直接使用模型类型注入。

// 在构造方法中注入
public function __construct(ModelStackBook $modelStackBook)
{
    parent::__construct();
    $this->ModelStackBook = $modelStackBook;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文