❝本文將會帶你了解屬於spl_autoload_register的故事。
❞
喀喀噠整理了一個路線圖,著手打造一份面試寶典,準備按照這樣的路線圖進行寫文章,後期發現沒有補充到的知識點在進行添加。也期待各位夥伴一起來幫忙補充一下。評論區見哦!
❞
#### ########在這裡插入圖片描述##################一、spl_autoload_register前世今生############################################################################## #在剛接觸PHP沒有使用框架之前相信大多數夥伴都用過include和require,當然還有include_once和require_once。 ######這兩個差別還記得嗎? ######include引入錯誤時只會有警告,而require則會直接讓腳本停止。 ###在PHP5.3引入了命名空間的概念,為此在PHP文檔中記載著11年前一位貢獻者是這樣說的,I made this benchmark to ensure that I don't recommend something that could be called "nice, but slow" later
。
翻譯過來是「我做的這個測試,是為了確保我以後不推薦可以稱之為不錯,但是很慢的東西」。
做的這個測試就是定義了10個資料夾,每個資料夾有10個子資料夾並且每個子資料夾裡都有10個類,然後使用了autoload和spl_autoload比較之後,平均執行時間多50ms。
那麼這個東西指的就是_autoload()
,終將這個方法在PHP7.2被廢棄。
那麼除了效率問題之外還有一個原因最終廢棄了_autoload這個方法。
spl_autoload_register可以依照自己需求寫多個,載入順序是依照佇列方式,先進先出。
autoload是全域函數,所以只能定義一次,多次定義會報錯。如果一個專案使用多個框架實現,就會引發這樣的問題。
這個函數只有三個參數,第一個參數是自動載入的函數,第二參數為自動註冊的函數失敗時是否拋出異常,第三個參數為添加函數到隊列之首,而不是隊列尾部。
以上都是依照true定義的。
定義兩個檔案say和user
say檔宣告一個類別Say並且設定一個方法hello
這時來到user文件,我們需要先定義一個autoload方法,然後使用spl_autoload_register進行註冊
列印出來的資料結果
❝#堅持學習、堅持寫博、堅持分享是咔咔從業以來一直所秉持的信念。希望在偌大互聯網中咔咔的文章能帶給你一絲絲幫助。
❞
以上是來聊聊,spl_autoload_register的前世今生的詳細內容。更多資訊請關注PHP中文網其他相關文章!