PHP spl_autoload_register 多次调用

  spl_autoload_register 是注册php auto_load的函数,这个函数可以多次加载

    每一个函数应该都有返回值(boolean),如果返回值为true则认为已经加载成功就退出了加载过程,如果失败则继续调用后边的auto_load函数加载php文件,当然如果最后一个auto_load也没有加载成功这时候就没有加载完成,new的时候就会报错。

<?php
 
define('BASE_PATH',dirname(__FILE__).'/') ;
 
function cron_autoload1 ($name) {
    $file = BASE_PATH.'lib1/'.$name.'.class.php';
    if(file_exists($file)){
        include_once($file);
        return true;
    }
 
}
function cron_autoload2 ($name) {
    $file = BASE_PATH.'lib2/'.$name.'.class.php';
    if(file_exists($file)){
        include_once($file);
        return true;
    }
}
spl_autoload_register('cron_autoload1');
spl_autoload_register('cron_autoload2');
 
new Class1();
new Class2();
//该函数后面两个参数为
//此参数设置了 autoload_function 无法成功注册时, spl_autoload_register()是否抛出异常。
//如果是 true,spl_autoload_register() 会添加函数到队列之首,而不是队列尾部。
spl_autoload_register('autoLoad',true,true);

//执行自动加载的方法
function autoLoad($class_name){
    echo PHP_EOL;
    echo "现在输出的类名为:".$class_name;
    echo PHP_EOL;
    include './index.php';
}
$obj = new ceshi();
$obj->run();

注:与 __autoload() 函数不同 , __autoload 从7.2开始已经启动,从8.0正式删除,而且它只可以调用一次。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注