【问题标题】:PHP Traits Class Property Returns NullPHP Traits 类属性返回 Null
【发布时间】:2021-02-19 17:55:58
【问题描述】:
我的目标是从数据库中获取值并将其分配给特征中的属性。我知道构造函数在特征方面是不好的做法,但我只是将其用作示例。我正在使用 Laravel 8,这就是我所做的。
use App\User;
trait TestTrait {
private $user;
public function __construct() {
$this->user = User::all();
}
public function test() {
var_dump($this->user);
}
}
实现我的目标的更好方法是什么?谢谢你的回答。
【问题讨论】:
标签:
php
laravel
eloquent
traits
【解决方案1】:
第一个私有 $user 应该是公共 $user。
因为如果您使用 private 只有当前类将有权访问该字段或
方法。
也在构造这部分$this->user = User:all(); 不是一个好主意。你应该
仅在构造中传递模型,这样您就可以访问所有该模型的
方法也注入模型。改成这样:
public function __construct(User $user) {
$this->user = $user;
}
//and you can use it like this then
public function test() {
var_dump($this->user->all());
/**or $this->user->find($id) and any methods that exists on that User class*/
}