我有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);
}
}
我缺少的东西吗? 谢谢!
在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);
}
}
依赖注入比手动调用更好,因为你可以容易地在测试过程中通过一个模拟对象到该控制器。 如果你没有测试,也许别人会在将来,善待。 :-)
你是不是__constructing()类,你只是一个类中的功能,这意味着它被封装到类中该函数内部分配变量。
所以,如果你想使$this->company
类全球性的,你可以使用
public function __construct() {
$this->company = new Teamleader\Company;
}