[PHP] 多条spl_autoload_register的执行顺序

函数的定义如下:

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

 

posted @ 2020-12-23 16:10  唯一客服系统开发笔记  阅读(241)  评论(0编辑  收藏  举报