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

YII2框架学习 高效篇(一) 延迟加载

创建时间:2017-06-08 投稿人: 浏览次数:170

高效是YII框架的一个特点,在对YII框架的基础进行了学习之后,当然也要对YII框架是如何达到高效运行进行学习。首先针对YII的延迟加载进行学习

1. 类的延迟加载

在原生php中,我们一般是之间把所需的类直接全部require加载。但是,某一次的页面加载不一定会用到所有的类(比如加了if判断等等),如果可以在这个类确定用到之前再加载,想必可以使页面更高效。而YII就提供了spl_autoload_register()这个方法来实现。

function my_loader($class){
    require ("classClass1.php");
    require ("classClass2.php");
}

spl_autoload_register("my_loader");

$is_girl = $_GET["sex"] == 0 ? true : false;

if($is_girl){
    echo "girl";
    $class1 = new Class1();
}else{
    echo "boy";
$class1 = new Class2();}


  


2.类的映射表机制 (class map)

  在用use引用命名空间之后,调用类的时候会在所引用的命名空间里面去寻找。如果可以给一个信息,可以直接找到这个类所在的class文件的话,可以节省一部分的查找时间。而YII框架的类的映射表机制 (class map)就是为了这种情况而设计的。

namespace appcontrollers;
use appmodelsOrder;
class HelloController extends Controller{
    public function actionAbout(){

        YII::$classMap["appmodelsOrder"] = "D:WWWasicmodelsOrder.php";
        $order = new Order;

    }
}

但是不建议往类的映射表填入过多的映射,因为这样映射表内的查询会降低性能 

 3.组件的延迟加载 

在进到页面时,需要加载很多组件,比如session,request。但并不是所有组件都一定会用到,如果可以在使用的时候再加载组件,就可以进一步提高效率。YII的组件已经自动封装好了这一特性。

$session = YII::$app->session;//_get()方法调用 

 YII确实在很多小细节做足了功夫,使框架性能进一步优化,这些地方都是我们自己设计框架时没想到或者懒得做的,真是学海无涯

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。