laravel 自动new一个对象是怎么实现的呢

发布于 2022-09-05 09:56:56 字数 248 浏览 23 评论 0

laravel 自动new一个对象是怎么实现的呢
有没有讲解laravel实现依赖注入的文章,或源码解读


public function __construct(Contract $contract,OwnerRepository $owner)
{
        $this->model = $contract;
        $this->owner = $owner;
}

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

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

发布评论

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

评论(2

绅刃 2022-09-12 09:56:56

利用反射,将DI模式注入的参数动态的生成相应的对象

凉城已无爱 2022-09-12 09:56:56

设计模式
IoC 模式

bind
绑定接口和生成相应的回调函数
如果参数 $concrete 为一个回调函数,则直接将回调函数与服务名称$abstract 进行绑定
如果参数 $concrete 为一个名称,则首先需要通过 getClosure() 函数创建服务回调函数,然后将回调函数与服务名称绑定,总之需要实现一个可以生成相应服务实例对象的回调函数与服务名称进行绑定。

make 服务解析
abstract 服务名称
concrete 服务名称的实体
可以将其分为两个步骤来完成,一个是完成对应服务的查找,另一个是完成服务的实现,一般是指完成实例化对象的创建。两个步骤分别由make() 和 build() 函数完成。

build
实例化对象(对象的创建)
如果服务实体就是一个闭包函数,则直接调用该闭包函数完成服务实例化对象的创建
如果服务实体只是一个具体类的类名,则需要通过反射机制来完成实例化对象的创建。

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