【问题标题】:PHP, after setting an array in a method, how can I get it from a different method in same classPHP,在方法中设置数组后,如何从同一类中的不同方法中获取它
【发布时间】:2015-08-07 20:34:10
【问题描述】:

我有一个class,在这个类中我有一个设置我的数组的方法。 我怎样才能得到这个array 的值并从另一个method 中使用它们在同一个class 中?

这是我的课:

class HomeController extends Controller
{
    private $tmp = array();

    public function setValues(){

        array_push($this->tmp,"blue","yellow");

        print_r(array_values($this->tmp)); // It works well, I can see values.
    }


    public function getValues(){

       print_r(array_values($this->tmp)); // It doesn't work - shows empty array.

       // return $this->tmp also doesn't work - shows empty array.
    }

}

我怎样才能得到这个数组的值?

【问题讨论】:

  • 你必须在调用getValues()之前调用函数setValues(),或者放入__construct ...
  • 可能不是单例。因此,当您再次调用控制器时,您正在调用一个新对象。

标签: php arrays oop laravel


【解决方案1】:

我不确定控制器在 Laravel 中是如何工作的。但是,如果它与其他框架类似,那么 Controller 就不是单例的。可能会为每个请求创建一个新控制器。这意味着您在该类的一个实例上调用setValues();,在另一个实例上调用getValues();

我很确定您可以将 Laravel 配置为将控制器视为单例。

http://laravel.com/docs/5.0/container 展示了如何在需要时将控制器注册为单例。

【讨论】:

    【解决方案2】:

    有效!你需要先调用setter,然后调用getter:

    $o = new HomeController();
    $o->setValues();
    $o->getValues();
    

    请再次检查自己:https://ideone.com/UYAfxe

    【讨论】:

    • 我有两个按钮(和 2 个请求)第一个按钮调用 setvalues 方法,第二个按钮调用 getvalues 方法。我应该在一个请求中给他们打电话吗?
    猜你喜欢
    • 2020-05-09
    • 1970-01-01
    • 2017-01-26
    • 2020-06-18
    • 2018-10-04
    • 1970-01-01
    • 2021-07-02
    • 1970-01-01
    • 2015-01-07
    相关资源
    最近更新 更多