Yii框架之--類的延遲加載實例說明

類的延遲加載 (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;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章