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正式删除,而且它只可以调用一次。