__get()和__set()方法的意义是什么



今天我读了一篇关于MVC的教程,那家伙使用魔术方法(__get&__set())访问私有成员值。(链接)起初,我对__get和__set的作用感到困惑,但在阅读了互联网上的文章后,我终于发现,如果成员无法从外部访问,则会调用这些方法。目前为止

但是有这样的代码是没有意义的:

class Foo{私人$bar;公共__set($value){$this->bar=$value;}公共__get(){return$this->bar;}}

我想我可以使用普通的getter和setter——它的IMO更容易理解:

class Foo{私人$bar;公共setBar($value){$this->bar=$value;}公共getBar(){return$this->bar;}}

如果您想使用__get&amp__设置你也可以让成员公开-所以我不明白它的含义。你能告诉我(也许举个例子)这两种方法的意义是什么吗?

您开发了程序,并且认为不必控制对属性的访问。因此,你把公众放在首位,而不是私人。但在维护过程中,您意识到需要更改类以施加约束,从而禁止对属性使用0。要进行此更改,您需要添加一个setter,并将属性私有化。结果:您需要将此更改影响到所有此类客户。

如果您从一开始就使用setter和getteur,维护就会简单得多。

最新更新