如何从对象获取属性(PHP)

时间:2018-11-16 08:57:17

标签: php laravel laravel-5 php-7

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

谢谢

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

}

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

感谢,

2 个答案:

答案 0 :(得分:1)

也许这更简单

$params = $user->toArray();

$params = $user->toJson();

答案 1 :(得分:0)

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

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

在Laravel环境中,您可以轻松地忽略此警告。