对PHP类自动加载机制的深入理解

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类的自动加载机制是萧边分享你的全部内容。我希望能给你一个参考,希望你能支持它。