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')); }