我有这个函数,它通过参数接收“用户”模型,我想收集该对象的属性,为此我这样做,代码对我有用,但编辑器“ phpstorm”向我抱怨这个错误,那是要知道什么是最好的方法。
谢谢
public function sendEmail(User $user)
{
$params = [
'name' => "{$user->completeName}",
'language' => "{$user->locale}",
'user_id' => "{$user->id}"
];
}
通过魔术方法少访问的字段...(Ctrl + F1) 检查信息:在主题类中找不到引用的字段。注意:不对类型为“ stdClass”或派生的对象执行检查。
感谢,
答案 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环境中,您可以轻松地忽略此警告。