【问题标题】: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*/
       }
    

    【讨论】:

      猜你喜欢
      • 2013-05-10
      • 2021-10-03
      • 2012-04-29
      • 1970-01-01
      • 1970-01-01
      • 2019-07-17
      • 2018-11-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多