Laravel 中延時繫結的理解

liuguowei163發表於2020-04-16

在學習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 協議》,轉載必須註明作者和本文連結

相關文章