如何从对象中获取属性(PHP)
Posted
技术标签:
【中文标题】如何从对象中获取属性(PHP)【英文标题】:How to get attributes from object (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”或派生类型的对象执行检查。
谢谢,
【问题讨论】:
这只是一个警告,您可以禁用它。类似这个问题:***.com/questions/25578649/… 【参考方案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 上下文中,您可以忽略此警告。
【讨论】:
以上是关于如何从对象中获取属性(PHP)的主要内容,如果未能解决你的问题,请参考以下文章