我有一个私有函数,它有很多变量,我们可以这样说:$foo
,$bar
,$baz
。
在函数内部,我调用parent::_setViewVars(array('foo','bar','baz'));
此_setViewVars
看起来如此:
protected function _setViewVars($a){
foreach($a as $v){
global $$v;
$this->set($v, $$v);
}
}
我只是想摆脱像80行$this->set('selected_areas',$selected_areas);
那样的蛋糕,这就是这个功能的用途。
_setViewVars
无法访问$$v
,因为它不是全局变量。鉴于从具有这些变量的上下文调用此函数,我能以某种方式与它们联系吗?
(顺便说一句,如果有一种蛋糕方式批量设置具有相同名称的视图变量,请告诉我如何 - 我还没找到一个)
PS:将所有内容打包成阵列不是解决方案,我们在这里谈论成千上万个不必要的方括号。
答案 0 :(得分:1)
您正在寻找的是非常标准的PHP:
compact()
- Create array containing variables and their values
示例显示它在CakePHP Action中的用法:
$var1 = "I";
$var2 = "love";
$var3 = "pizza!";
$this->set(compact('var1', 'var2', 'var3'));
(可能想尝试淡化仇恨 - 你更有可能得到这样的帮助)