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 是否已经提供了更好或更简洁的方法来实现相同的结果?

4

2 回答 2

3

有一种原生方式:紧凑

$one = 'ONE';
$two = 'TWO';
$a = compact( 'one', 'two' );
print_r( $a );
/*
Array
(
    [one] => ONE
    [two] => TWO
)
*/
于 2012-04-26T13:56:02.243 回答
2

你正在寻找compact.

public function indexAction()
{
    $param1 = 'fee';
    $anotherBigParam = 'foe';
    $yetAnotherParam = 'fum';
    return compact('param1', 'anotherBigParam', 'yetAnotherParam');
}
于 2012-04-26T13:55:04.207 回答