DonkeyPHP框架-基础知识准备

版权声明:本文为博主原创文章,未经博主允许不得转载。 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();

猜你喜欢

转载自blog.csdn.net/wh2691259/article/details/52670344