在Laravel中创建一个带有许多参数的视图


Create a view with a lot of parameters in Laravel

我需要在控制器中创建一个包含20多个参数的视图。

在Laravel中,有很多方法可以将参数传递给视图:

方法1:传递$data作为参数

public function get_index1(){
    $data = array(
        'var1' => $var1,
        'var2' => $var2,
        'var3' => $var3,
        'var4' => $var4,
    );
    // associative array
    return View::make('test.index', ['data' => $data]);
    // OR with compact()
    return View::make('test.index', compact('data', 'otherVariable'));
}

方法2: Single with

public function get_index2(){
    $data = array(
        'var1' => $var1,
        'var2' => $var2,
        'var3' => $var3,
        'var4' => $var4,
    );
    return View::make('test.index')->with($data);
}

方法3:与

相乘
public function get_index3(){
    return View::make('test.index')
            ->with('var1', $var1)
            ->with('var2', $var2)
            ->with('var3', $var3)
            ->with('var4', $var4);
}

在我的情况下(传递超过20个参数)哪个是最有效的方法,为什么?

"我们应该忘记小效率,大约97%的时间说:过早优化是万恶之源"- Donald Knuth

在开发时,你应该关注可维护性而不是性能。只有当你遇到性能问题时,你才应该开始担心它,因为优化通常伴随着不可避免的可维护性损失。

当然,这是假设你是在web开发,而不是在强子超级对撞机的低级矩阵模块上工作。

所以答案是2

只需将这些参数放入数组中并使用您喜欢的方法。两种方法的效率变化都不大。

由于我还没有看到填充$data的数据的上下文,我不得不猜测:使用选项2与循环,最终构建$data数组:

$data = array(
    'var1' => $var1,
    'var2' => $var2,
    'var3' => $var3,
    'var4' => $var4,
);

始终使用被视为标准实践的方法,直到你自己找到适合你理解的更好的方法。从外部的角度来看:如果我要编辑你的代码,我宁愿看到两个,而不是破译你如何通过任何其他方式传递数据。