对PHP类自动加载机制的深入理解
在PHP5中,我们需要使用一个类或类的方法,必须用在包括或要求。每次使用一个类时,我们需要编写一个包含。
PHP作者想要简单。最好是引用一个类,当系统可以自动找到类,如果没有包括进来了。
所以__autoload()函数应运而生。
它通常是放在应用程序的入口类,如Discuz,在class_core.php。
首先,举一个简单的例子:
第一种情况:该文件A.php内容如下
< PHP
一个{类
公共功能__construct(){
echo'fff;
}
}
>
该文件c.php内容如下:
< PHP
功能__autoload(合班)
{
$;
如果(is_file(文件)){
require_once(文件);
}
}
美元=新(一); / /这将自动调用__autoload到A.php文件
>
第二例:有时我希望能够自定义加载,想有一个凉爽的名字加载,然后C.php改为如下:
< PHP
函数加载器($类)
{
$;
如果(is_file(文件)){
require_once(文件);
}
}
spl_autoload_register('loader '); / /注册自动加载方法,覆盖原__autoload
美元=新的A();
>
第三种情况:我想稍微高一点,用一个类来管理自动加载。
< PHP
类装载器
{
公共静态函数loadClass(合班)
{
$;
如果(is_file(文件)){
require_once(文件);
}
}
}
spl_autoload_register(阵列('loader ','loadclass '));
美元=新的A();
>
现在是最好的形式。
我们通常把spl_autoload_register(*)在入口脚本,这是引用的开始。例如,下面的Discuz的方法。
如果(function_exist('spl_autoload_register ')){
spl_autoload_register(阵列(核心,'autoload ')); / /如果有超过PHP5,注册功能注册自动加载函数编写自己的核心类加载
其他{ }
功能__autoload(合班){ / /如果不是,重写PHP原生__autoload功能,使自己的核心函数调用。
回归核心::加载(合班);
}
}
这一部分位于入口文件的前面,自然是极好的。
本文深入理解PHP类的自动加载机制是萧边分享你的全部内容。我希望能给你一个参考,希望你能支持它。