Laravel 中延时绑定的理解

在学习 laravel 的加载流程中,在初始的环节中,有一个地方卡了半天,一直不明白什么是什么意思,经过查询资料,原来是延时绑定,延时绑定一直没有用过,所以才不明白,代码如下:

  1. 位置为 vendor/laravel/framework/src/Illuminate/Foundation/Application.php 这个类中的注册初始化的时候调用此处。static::setInstace($this)中 setinstance 为下图容器中的方法,$this 为当前 Application 应用实例对象。

Laravel 中延时绑定的理解

2. 位置为 vendor/laravel/framework/src/Illuminate/Container/Container.php, 此处 return 的其实是把 Application 实例化对象付给了 static::$instance。
Laravel 中延时绑定的理解
3. 位置为 vendor/laravel/framework/src/Illuminate/Container/Container.php 与上边方法相对应,此方法为获取 Application 实例对象的方法,如果不存在就实例化 Application 类,此处 new static 是实例化子类的方法,因为 Container.php 只有 Application 这一个子类,所以任何地方调用此方法,实例化的都是 Application 此应用类。
Laravel 中延时绑定的理解

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。