Laravel不记得类变量(Laravel doesn't remember class v

2019-10-23 12:11发布

我有Laravel一类与类变量保存和对象

class RegisterController extends Controller {
    public $company;

当我在我的索引方法设置的变量一切顺利

public function index($id = null) {
    $this->company = new Teamleader\Company;

当我尝试访问$这个- >公司从另一种方法,它返回null

这是我的全部代码

class RegisterController extends Controller {

    public $company;

    public function index($id = null)
    {
        $this->company = new Teamleader\Company;

        // returns ok!
        dd($this->company);
        return view('register.index');
    }

    public function register()
    {
        // returns null
        dd($this->company);
    }

}

我缺少的东西吗? 谢谢!

Answer 1:

在Laravel 5你可以注入的新实例Teamleader\Company到你需要它可用方法。

use Teamleader\Company;

class RegisterController extends Controller {

    public function index($id = null, Company $company)
    {
        dd($company);
    }

    public function register(Company $company)
    {
        dd($company);
    }
}

对于Laravel <5依赖性注入到构造。

use Teamleader\Company;

class RegisterController extends Controller {

    protected $company;

    public function __construct(Company $company)
    {
        $this->company = $company;
    }

    public function index($id = null)
    {
        dd($this->company);
    }

    public function register()
    {
        dd($this->company);
    }
}

依赖注入比手动调用更好,因为你可以容易地在测试过程中通过一个模拟对象到该控制器。 如果你没有测试,也许别人会在将来,善待。 :-)



Answer 2:

你是不是__constructing()类,你只是一个类中的功能,这意味着它被封装到类中该函数内部分配变量。

所以,如果你想使$this->company类全球性的,你可以使用

public function __construct() {
 $this->company = new Teamleader\Company;
}


文章来源: Laravel doesn't remember class variables