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

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

1. 类的延迟加载

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

function my_loader($class){
    require ('class\Class1.php');
    require ('class\Class2.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 app\controllers;
use app\models\Order;
class HelloController extends Controller{
    public function actionAbout(){

        \YII::$classMap['app\models\Order'] = 'D:\WWW\basic\models\Order.php';
        $order = new Order;

    }
}

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

 3.组件的延迟加载 

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值