1.使用__autoload函数自动加载类
//使用__autoload函数自动加载类
function __autoload($className){
require $className.'.php';
}
//实例化类IMooc的时候,发现当前文件并不存在这个类,就会自动到__autoload函数中传入类名
$IMooc=new IMooc();
var_dump($IMooc);//object(IMooc)#1 (0) { }
2.spl_autoload_register函数实现自动加载
【1】第一种写法,路由算法直接写在spl_autoload_register函数里面
spl_autoload_register(function($className){
require $className.'.php';
});
$IMooc=new IMooc();
var_dump($IMooc);//object(IMooc)#1 (0) { }
【2】第二种写法,路由算法写在函数里面
function test($className){
require $className.'.php';
}
spl_autoload_register('test');
$IMooc=new IMooc();
var_dump($IMooc);//object(IMooc)#1 (0) { }
【3】第三种写法 路由算法写在类里面
class Momo{
function autoload($className){
require $className.'.php';
}
}
spl_autoload_register([new Momo,'autoload']);
$IMooc=new IMooc();
var_dump($IMooc);//object(IMooc)#1 (0) { }
3.spl_autoload_register结合命名空间实现一个类自动加载模块
【1】imooc.php中 创建一个类
<?php
namespace models;
class Imooc{
public function nice(){
echo "imooc nice";
}
}
【2】main.php中
<?php
spl_autoload_register(function($className){
//var_dump($className);// models\Imooc
//命名空间+类名就是文件路径
//echo str_replace("\\","/",$className.".php");// models/Imooc.php
include str_replace("\\","/",$className.".php");
});
$imooc=new models\Imooc();
var_dump($imooc);//object(models\Imooc)#2 (0) { }
?>