从变量名创建数组

时间:2012-04-26 13:50:36

标签: php arrays model-view-controller symfony

为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 个答案:

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