为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是否已经提供了更好或更清晰的方法来实现相同的结果?
答案 0 :(得分:3)
有一种本地的方式:compact
$one = 'ONE';
$two = 'TWO';
$a = compact( 'one', 'two' );
print_r( $a );
/*
Array
(
[one] => ONE
[two] => TWO
)
*/
答案 1 :(得分:2)
您正在寻找compact
。
public function indexAction()
{
$param1 = 'fee';
$anotherBigParam = 'foe';
$yetAnotherParam = 'fum';
return compact('param1', 'anotherBigParam', 'yetAnotherParam');
}