【问题标题】:How to get attributes from object (PHP)如何从对象中获取属性(PHP)
【发布时间】:2019-04-19 10:32:45
【问题描述】:

我有这个函数通过参数接收“用户”模型,我想收集该对象的属性,为此我这样做,代码对我有用,但编辑器“phpstorm”向我抱怨这个错误,就是要知道最好的方法是什么。

谢谢

public function sendEmail(User $user)
{
    $params = [
        'name' => "{$user->completeName}",
        'language' => "{$user->locale}",
        'user_id' => "{$user->id}"
    ];

}

通过魔术方法访问的字段 less... (Ctrl+F1) 检查信息:在主题类中找不到引用的字段。注意:不会对“stdClass”或派生类型的对象执行检查。

谢谢,

【问题讨论】:

标签: php laravel laravel-5 php-7


【解决方案1】:

也许这更简单

$params = $user->toArray();

$params = $user->toJson();

【讨论】:

    【解决方案2】:

    这是因为在 Laravel 中,您的模型实际上并没有定义属性。 在 PHP 中有魔术方法的概念(http://php.net/manual/en/language.oop5.overloading.php#object.get),其中 __get() 方法允许您基本上拦截对其他无法访问(或不存在)的属性的访问。

    这就是 Laravel 幕后发生的事情。您的所有属性访问都被“拦截”,Laravel 会查看您的数据库是否包含一个名称类似于您尝试访问的属性的列(非常简单的说法)。

    在 Laravel 上下文中,您可以忽略此警告。

    【讨论】:

      猜你喜欢
      • 2011-05-27
      • 1970-01-01
      • 1970-01-01
      • 2016-09-27
      • 2020-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多