- 加入我的QQ群
- 关注我的百家号
扫描下面的二维码,“关注”我的百家号。
一般情况下,我们要想加载某个类文件时,我们只需要include或require这个类文件就可以了。但有时,我们加载的类太多,而并不是任何时候都需要同时加载这么多的类,而是,只在我们new这个类时,才加这个类。这时,php就为我们提供了一个自动加载类的方式。下面,一起来看看PHP是如何自动加载类文件的吧。
案例:
项目函数文件:functions.php
项目模型类:UserModel.class.php
项目模型类目录:Model
在当前文件中实现自动加载模型类UserModel.class.php
方法一:__autoload()魔术方法。
PHP提供好多魔术方法,如:__set()、__get()等。
我们在当前文件中定义并引用__autoload()方法,代码如下:
//自动加载类
function __autoload($class){
$file = 'Model/'.$class.'Model.class.php'; //模型类相对路径
if(is_file($file)){//判断文件是否存在
require_once($file);
}
}
方法二:spl_autoload_register()调用自动加载类的自定义函数。
首先,我们定义一个自动加载类的自定义函数 autoloads(),代码如下:
function autoloads($class){
$file = 'Model/'.$class.'Model.class.php';
if(is_file($file)){
require($file);
}
}
然后,通过spl_autoload_register()来调用这个函数,代码如下:
spl_autoload_register('autoloads');
上面2种方法都可以实现自动加载类。我们只需在当前文件中 new 这个类(实例化这个类),就会自动加载这个类进来。上例中,我们在当前文件:
$model = new User();
就相当于:
include ('Model/UserModel.class.php');
PHP开发中怎样自动加载类文件?