类的延迟加载 (lazy loading)
以例子的方式解释
现有三个类,Class1.php、Class2.php、index.php
在index中:
require('Class\Class1.php');
require('Class\Class2.php');
$is_girl = $__GET['sex'] == 0?ture:false;
if($is_girl){
echo 'this is girl';
$class1 = new Class1;
}else{
echo 'this is not girl';
$class1 = new Class2;
}
本例存在的问题:只实例化一个类,但同时加载了两个类,因此优化为:
$is_girl = $__GET['sex'] == 0?ture:false;
if($is_girl){
echo 'this is girl';
require('Class\Class1.php');
$class1 = new Class1;
}else{
echo 'this is not girl';
require('Class\Class2.php');
$class1 = new Class2;
}
这就是一个简单的延迟加载案例~!!!!!!
真正的延迟加载,用到一个函数spl_autoload_register();
重复以上面的例子
function mu_loader($class){
require('Class\\'.$class.'.php');
}
spl_autoload_register('my_loader');//
$is_girl = $__GET['sex'] == 0?ture:false;
if($is_girl){
echo 'this is girl';
$class1 = new Class1;//当实例化未知类时,调用spl_autoload_register('my_loader'),进行加载该类
}else{
echo 'this is not girl';
$class1 = new Class2;