簡體   English   中英

php spl_autoload_register與__autoload嗎?

[英]php spl_autoload_register vs __autoload?

您好,除了可以使用自己的名稱自動加載功能以外,其他用法是否有所不同? 有任何性能差異嗎? 他們在內部如何工作?

之間

function __autoload_libraries($class){
    include_once 'lib.'.$class.'.php';
}

spl_autoload_register('__autoload_libraries');

function __autoload($class){
    include_once 'lib.'.$class.'.php';
}

__autoload通常被認為已過時。 它僅允許單個自動裝帶器。 通常,僅當使用的PHP版本不支持spl_autload_register才應使用__autoload

spl_autoload_register允許注冊多個自動加載器,這些自動加載器將依次運行,直到找到並加載匹配的類/接口/特征,或者直到所有自動加載選項都用盡為止。 這意味着,如果您使用框架代碼或其他實現自己的自動加載器的第三方庫,則不必擔心會引起沖突。

更新:

自PHP 7.2.0起, __autoload現在已正式被棄用,這意味着它現在位於斬波塊中。 如果您希望代碼與將來的PHP版本兼容,則絕對不應該使用__autoload

“自動加載類”的文檔內容為

spl_autoload_register()為自動加載類提供了更靈活的替代方法。 因此,不建議使用__autoload(),以后可能不建議使用或將其刪除。

spl_autoload_register()的文檔如下:

如果必須有多個自動加載功能,則spl_autoload_register()允許這樣做。 它有效地創建了自動加載功能隊列,並按照定義的順序遍歷每個功能。 相反,__ autoload()只能定義一次。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM