版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wh2691259/article/details/52670344
每一个框架都会有类自动加载,而每一个文件都得自己去require,在php中有相应的方法spl_auto_register 与__autoload。两者的区别如下
//__autoload用法
function __autoload($classname)
{
$filename = "./class/".$classname.".class.php";
if (is_file($filename))
{
include $filename;
}
}
//spl_autoload_register用法
spl_autoload_register('load_class');
function load_class($classname)
{
$filename = "./class/".$classname.".class.php";
if (is_file($filename))
{
include $filename;
}
}
说明一下 这边spl_auto_register的好处在于可以多个自动加载函数
下面的例子说明,如果autoload1加载不到b,系统会调用autoload2加载b,如果都没有就会报错。spl_auto_register会依次调用,但是__auto只能是一次
define('BASE_PATH',dirname(__FILE__).'/') ;
function autoload1 ($name) {
$file = BASE_PATH.'lib1/'.$name.'.class.php';
if(file_exists($file)){
include_once($file);
return true;
}
}
function autoload2 ($name) {
$file = BASE_PATH.'lib2/'.$name.'.class.php';
if(file_exists($file)){
include_once($file);
return true;
}
}
spl_autoload_register('autoload1');
spl_autoload_register('autoload2');
new a();
new b();