2012-04-26 155 views
0

当Symfony的2写入控制器,我经常需要一个数组来相当多的变量传递给模板像return array('param1' => $param1, 'anotherBigParam' => $anotherBigParam, 'yetAnotherParam' => $yetAnotherParam);创建自变量名

随着许多参数此结束了很长的又丑,所以我想到了创建帮手功能:

public function indexAction() 
{ 
    $param1 = 'fee'; 
    $anotherBigParam = 'foe'; 
    $yetAnotherParam = 'fum'; 
    return $this->vars('param1', 'anotherBigParam', 'yetAnotherParam'); 
} 

private function vars() { 
    $arr = array(); 
    foreach(func_get_args() as $arg) { 
     $arr[$arg] = $$arg; 
    } 
    return $arr; 
} 

这样做有什么缺点或风险吗? PHP或Symfony 2已经提供了一种更好或更干净的方式来实现相同的结果吗?

回答

2

您正在寻找compact

public function indexAction() 
{ 
    $param1 = 'fee'; 
    $anotherBigParam = 'foe'; 
    $yetAnotherParam = 'fum'; 
    return compact('param1', 'anotherBigParam', 'yetAnotherParam'); 
} 
+0

打我吧:) – meouw 2012-04-26 13:56:28

+1

@meouw:我是一个忍者^ _^ – 2012-04-26 13:56:58

+1

我就知道* *必须有原生的方式!感谢这两个答案,只要接受成为可能,我会接受这个忍者速度。 – Kaivosukeltaja 2012-04-26 14:04:05

3

有做它的原生方式:compact

$one = 'ONE'; 
$two = 'TWO'; 
$a = compact('one', 'two'); 
print_r($a); 
/* 
Array 
(
    [one] => ONE 
    [two] => TWO 
) 
*/