无法使用getter方法访问变量属性

时间:2018-11-29 19:25:50

标签: php arrays

在PHP中,除非我在不使用getter方法的情况下访问它的属性,否则无法将值赋给变量,这是设计使然还是我错过了什么?

简而言之,当我执行$article->content->value[$some_value] = 'hello'时,它可以工作,但是$article->get_value()[$some_value] = 'hello'没有设置任何东西,该数组仍然为空。

get_value所做的只是return $this->content->value,并且用作吸气剂时,它会按预期执行操作。

我觉得我在这里错过了一些基本知识,如果有人可以分享我为什么设置值不起作用,那就太好了。

1 个答案:

答案 0 :(得分:2)

与对象不同,数组不是在PHP中通过引用返回的,因此,当调用getter方法时,您将获得一个副本。

如果您想修改对象属性本身,则可以通过在方法名称前加上“&”符号来更改方法定义以返回引用,例如

public function &getArray()
{
    return $this->array;
}

有关演示,请参见https://3v4l.org/1YK9H

我要强调的是,这在PHP中绝对不是不是模式,除了可能要很长一段时间才能回到PHP的4天(当时OOP不那么普遍)。我当然不会期望我使用的类通过引用返回数组,也不会建议其他人这样做。请注意,询问该类作为参考是不可能的,以防止对私有属性进行不必要的修改-该类必须定义行为。

PHP文档在此处提供了有关通过引用返回的更多信息:http://php.net/manual/en/language.references.return.php