现有一个类:
UserModel.class.php
<?php
class UserModel{
public function login(){
echo '登录<br/>';
}
public function logout(){
echo '退出登录<br/>';
}
}
?>
另一个PHP文件想要使用该类,需要把该类文件加载进来。
<?php
require('./'.$property.'.class.php');
<span style="white-space:pre"> </span>$user = new UserModel();
<span style="white-space:pre"> </span>$user->login();
?>
这样就可以输出“登录”了;
而当需要加载的文件很多时,写成千上百个require显得不现实,我们可以考虑下__autoload() 方法
<?php
function __autoload($property){
require('./'.$property.'.class.php');
}
$user = new UserModel();
$user->login();
?>
这么做的好处是:
__autoload()实现了自动加载的功能,一个方法顶成千上百个require...
当实例化一个未声明的类的时候,系统自动调用__autoload()方法,把该类作为参数传进去,并require进改文件作为声明。
而且引进(require)过一次后,同样可以在生命周期内生效,避免再次实例化再次引进(require)。
当然,我们不一定要__autoload(),可以自己写一个方法,然后告诉系统这个方法是自动加载方法:
spl_autoload_register('方法名'); //告知系统
function 方法名(){ //用户自定义自动加载方法
require ....
}
还可以注册类的静态方法当自动加载函数。