Php Laravel将变量值传递给其他方法

时间:2017-02-14 08:14:32

标签: php laravel

我正在重构给我的所有代码,我在代码中看到了那么多用于其他方法的重复变量

这是

$tag_id = json_decode($_POST['tag_id']);
    $tag_name = json_decode($_POST['tag_name']);
    $pname = json_decode($_POST['pname']);
    $icode = json_decode($_POST['icode']);
    $bname = json_decode($_POST['bname']);
    $client = json_decode($_POST['client']);
    $package = json_decode($_POST['package']);
    $reference = json_decode($_POST['reference']);
    $prodcat = json_decode($_POST['prodcat']);
    $physical_array = json_decode($_POST['physical_array']);
    $chemical_array = json_decode($_POST['chemical_array']);
    $physpec_array = json_decode($_POST['physpec_array']);
    $micro_array = json_decode($_POST['micro_array']);
    $microspec_array = json_decode($_POST['microspec_array']);
    $prod_type = json_decode($_POST['prod_type']);
    $create_physical_id_array = json_decode($_POST['create_physical_id_array']);
    $create_chemical_id_array = json_decode($_POST['create_chemical_id_array']);
    $create_micro_id_array = json_decode($_POST['create_micro_id_array']);

我的问题是我如何才能将它放在一个方法中,我只是将其称为其他方法而不是重复该代码。

谢谢

4 个答案:

答案 0 :(得分:1)

把它放在一个数组

$post_array = [];

foreach($_POST as $key => $value)
{
    $post_array[$key] = json_decode($value);
}
return $post_array;

然后像这样调用它

$post_array['create_micro_id_array'];

答案 1 :(得分:1)

您无法通过其他方式调用它。因为为该方法定义的变量是本地的。相反,您可以将变量定义为该类的成员变量,并根据访问说明符从任何方法甚至从外部类进行访问。

 protected $a=2;
 public function method1()
 {
   echo $this->a;
 }
 public function method2()
 {
   echo $this->a;
 }

答案 2 :(得分:0)

由于您似乎非常了解要使用的变量名称...我建议PHP Variable variables 为此,您可以遍历$_POST并在使用密钥作为变量名称时处理该值。

foreach($_POST as $key => $value)
{
    $$key = json_decode($value);
}

在一天结束时,这4行会产生所有这些...但是我不太确定看到代码的其他人看起来有多友好。试一试。

答案 3 :(得分:0)

您可以尝试extract功能。

extract($_POST);