牛骨文教育服务平台(让学习变的简单)
博文笔记

Yii框架之--类的延迟加载实例说明

创建时间:2017-03-29 投稿人: 浏览次数:486

类的延迟加载 (lazy loading)

以例子的方式解释

现有三个类,Class1.php、Class2.php、index.php
在index中:

require("ClassClass1.php");
    require("ClassClass2.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("ClassClass1.php");
        $class1 = new Class1;
    }else{
        echo "this is not girl";
        require("ClassClass2.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;
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。