有人可以介绍一种更有效或更恰当的方式在php中分配变量吗?
以下是我的代码片段:
类PurchaseController扩展了BaseController {
/**
*Gets input form form
*
*@var input
*/
protected $input;
public function postPurchaseCheck()
{
$input = Input::all();
$this->input = $input;
如果表单提交按钮有价值"购买"然后使用postPurhcase方法
if (Input::get('buy')) {
$this->postPurchase();
}
elseif (Input::get('cart')) {
$this->postAddCart();
}
}
public function postAddCart()
{
//Add these items to cart
echo "Add these items to cart";
$memory = $this->input['memory'];
$color = $this->input['color'];
$size = $this->input['size'];
$price = $this->input['price'];
$battery = $this->input['battery'];
$accessories = $this->input['accessories'];
.........等
}
public function postPurchase()
{
//Get prices, item id, etc and send user to checkout page
$memory = $this->input['memory'];
$color = $this->input['color'];
$size = $this->input['size'];
$price = $this->input['price'];
$battery = $this->input['battery'];
$accessories = $this->input['accessories'];
.........等等。我想知道是否有更快的方式在PHP中执行此操作,而无需为每个方法重新分配变量 } }
答案 0 :(得分:0)
您可以使用提取方法,但我会对输入的此功能保持谨慎。几乎你会把自己放回注册全局。
http://php.net/manual/en/function.extract.php
http://php.net/manual/en/security.globals.php
为什么不能直接从输入中使用该值?
答案 1 :(得分:0)
你可以像下面的代码一样,保存几行......
<?php
//loop an expected array, check and set from input
foreach(array('memory','color','size','price','...') as $key){
$$key = isset($this->input[$key]) ? $this->input[$key] : null;
}
?>
$$key
= http://php.net/manual/en/language.variables.variable.php
但您也可以使用$this->input['memory']
等,而不是将它们重新分配给局部变量。
也是你的行为,基本上只是浪费记忆(与上面相同):
$input = Input::all();
$this->input = $input;
只需:$this->input = Input::all();