从其他函数PHP访问局部变量

时间:2014-06-28 16:55:19

标签: php cakephp

我有一个私有函数,它有很多变量,我们可以这样说:$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:将所有内容打包成阵列不是解决方案,我们在这里谈论成千上万个不必要的方括号。

1 个答案:

答案 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'));

(可能想尝试淡化仇恨 - 你更有可能得到这样的帮助)