如何在PHP中为对象正确分配新属性

时间:2016-09-29 08:54:59

标签: php object

好的每隔一段时间我都遇到这个问题。假设我有类似以下的方法

10 public function myMethod($someVar){
11    $myObject = new stdClass();
12    $myObject->myProperty = $this->some_model->get_some_data_as_object();
13    $myObject->myProperty->subProperty = $someVar;
14 }

然后它上面的函数“工作”并且子属性被分配,但有时php会抛出类似下面的警告,而其他时候在以这种方式将属性分配给对象时没有警告。

A PHP Error was encountered
Severity: Warning
Message: Attempt to assign property of non-object
Filename: controllers/MyClass.php
Line Number: 13;

那么为什么有时会发出警告,如何避免这种警告?

编辑:请注意,我说“有效”!属性已分配,转储显示所有值,甚至是subProperty的值。所以警告说它不喜欢分配财产,但无论如何它都会这样做。

编辑:我需要澄清subProperty不存在。即它不是第12行所分配数据的一部分。我正在创建属性并在第13行分配值。

2 个答案:

答案 0 :(得分:1)

这可能是这个问题

$this->some_model->get_some_data_as_object() // It's was giving non-object

添加检查是否是对象。我们无法将属性分配给非对象

if (is_object($myObject->myProperty->subProperty))
{
    $myObject->myProperty->subProperty = $someVar;
}

答案 1 :(得分:0)

$ myObject-> myProperty为null

你必须检查:

if (isset($myObject->myProperty)) {
    $myObject->myProperty->subProperty = $someVar;
}

编辑:如果你想检查对象是否属于某个类,你可以这样做:

if (is_a($myObject->myProperty, 'MyPropertyClass')) {
    $myObject->myProperty->subProperty = $someVar;
}