分配变量的正确方法

时间:2014-07-18 19:32:04

标签: php variables variable-assignment

有人可以介绍一种更有效或更恰当的方式在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中执行此操作,而无需为每个方法重新分配变量     } }

2 个答案:

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