如何从对象中获取属性(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)的主要内容,如果未能解决你的问题,请参考以下文章

php如何打印对象的所有属性

PHP数组中可否存放对象?如果可以,那么在smarty的模板中应当如何获取对象的属性值?

如何在数组列表php中获取对象

如何从 Javascript 对象中获取属性值

如何使用 LINQ 从对象列表中获取唯一的属性列表?

如何从一个数组中获取具有其他相同属性的对象?