Yii 视图传参利器 – compact()

PHP手册上 compact() 说明是 compact — 建立一个数组,包括变量名和它们的值, 对每个参数, compact() 在当前的符号表中查找该变量名并将它添加到输出的数组中,变量名成为键名而变量的内容成为该键的值。简单说,它做的事和 extract() 正好相反。返回将所有变量添加进去后的数组。

如果你稍微看过 Yii 的源码, 你应该知道, Yii 的视图渲染就是使用 extract 这个指令(确切的说应当和 exit 一样,不是一个常规意义上的函数),来完成传入数组转换成本地视图中的变量的.

因此逆向思考一下, 我们在向视图里传参数的时候就可以使用 compact 指令了, 使用示例如下:

<?php
public function actionDemo() {
    $date = date('Ymd');
    $demos = DemoModel::model()->findAll();
    $this->render('demo', compact('date', 'demos'));
}