[PHP] 多條spl_autoload_register的執行順序
阿新 • • 發佈:2020-12-25
技術標籤:佇列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