類的延遲加載 (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;