我需要在控制器中创建一个包含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,
);
始终使用被视为标准实践的方法,直到你自己找到适合你理解的更好的方法。从外部的角度来看:如果我要编辑你的代码,我宁愿看到两个,而不是破译你如何通过任何其他方式传递数据。