首頁  >  文章  >  php框架  >  來聊聊,spl_autoload_register的前世今生

來聊聊,spl_autoload_register的前世今生

咔咔
咔咔原創
2020-09-01 00:10:071583瀏覽

本文將會帶你了解屬於spl_autoload_register的故事。

來聊聊,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是全域函數,所以只能定義一次,多次定義會報錯。如果一個專案使用多個框架實現,就會引發這樣的問題。

二、spl_autoload_register簡單使用

這個函數只有三個參數,第一個參數是自動載入的函數,第二參數為自動註冊的函數失敗時是否拋出異常,第三個參數為添加函數到隊列之首,而不是隊列尾部。

以上都是依照true定義的。

定義兩個檔案say和user

say檔宣告一個類別Say並且設定一個方法hello

來聊聊,spl_autoload_register的前世今生
在這裡插入圖片描述

這時來到user文件,我們需要先定義一個autoload方法,然後使用spl_autoload_register進行註冊

來聊聊,spl_autoload_register的前世今生列印出來的資料結果來聊聊,spl_autoload_register的前世今生

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

#

以上是來聊聊,spl_autoload_register的前世今生的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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