2012-04-26 98 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 
) 
*/