首頁 >php框架 >ThinkPHP >ThinkPHP容器初步解析

ThinkPHP容器初步解析

咔咔
咔咔原創
2020-10-12 12:46:282116瀏覽

本文是解析容器類別原始碼之前做的一個簡單的梳理,把大體梳理完腦海中有個印象才可以深入的對容器進行解析。

七、Container容器類別初步剖析

在先前的文章中實作了一個自己創建的容器,接下來看看源碼中的容器,經過了先前文章中容器中出現的技術點都已經囊括完了。

在接下閱讀容器原始碼就不會很吃力,如果之前的文章沒看,一定要大概過一遍哈!

相信大家無數次打開的一個檔案public/index.php

曾經有多少次開啟這個檔案想對原始碼進行一探究竟,但是看著看著就放棄了。

經過先前的註冊樹模式之後,你一定就會明白這行程式碼會回傳什麼Container::get('app')

這行程式碼回傳就是app的實例,可以進行簡單的斷點一下。

可以看到回傳就是app類別裡邊的眾多屬性。

所以說註冊樹模式不會的在繼續返回去看之前寫的,要不越看越迷糊。

之前的技術點都是為了後邊一個鋪墊,如果之前的文章不看後邊是沒辦法看的,高手就不說了哈!

那麼框架中的容器是怎麼定義的呢!它到底是怎麼實現的呢!

也就是只要要去關注這個get()方法做的事情就可以了。

程式碼就會追蹤到檔案thinkphp/library/think/Container.php中的get()方法

這裡的getInstance()方法不陌生了吧!這就是上文說過的單例模式。也就是說在程式的聲明週期內僅此會傳回一個實例的物件。

可以進行程式碼追蹤getInstance()這個方法,你就會在同檔中看到這個單例模式的方法,回傳Container實例。

接下來會對容器中的make方法進行深度解析。

堅持學習、堅持寫博、堅持分享是咔咔從業以來一直所秉持的信念。希望在偌大互聯網中咔咔的文章能帶給你一絲絲幫助。我是咔咔,下期見。

以上是ThinkPHP容器初步解析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn