1. 程式人生 > 其它 >[PHP] 多條spl_autoload_register的執行順序

[PHP] 多條spl_autoload_register的執行順序

技術標籤:佇列phpjavascriptjavapython

函式的定義如下:

spl_autoload_register ([ callable $autoload_function [, bool $throw = true [, bool $prepend = false ]]] ) : bool

官方的解釋是:

如果需要多條 autoload 函式,spl_autoload_register() 滿足了此類需求。 它實際上建立了 autoload 函式的佇列,按定義時的順序逐個執行。相比之下, __autoload() 只可以定義一次。
prepend
如果是 true,spl_autoload_register() 會新增函式到佇列之首,而不是佇列尾部。

也就是說當定義多條的時候

如果第三個引數是false , 那麼執行順序就是定義時的順序

第三個引數是true , 執行的順序就是定義的倒序執行

        spl_autoload_register(function ($class_name) {
            echo 111;
        },false,true);
        spl_autoload_register(function ($class_name) {
            echo 222;
        },false,true);

先輸出222 後輸出111

預設情況下是:

        spl_autoload_register(function ($class_name) {
            echo 111;
        });
        spl_autoload_register(function ($class_name) {
            echo 222;
        });

先輸出111 後輸出222