0

今天我读了一篇关于 MVC 的教程,那个人正在使用魔法方法(__get & __set())来访问一个私有成员值。(链接) 首先我很困惑 __get 和 __set 做什么,但是在阅读了互联网之后,我终于发现,如果无法从外部访问该成员,则会调用此方法。至今...

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

类Foo {
    私人$酒吧;

    公共 __set($value) {
        $this->bar = $值;
    }

    公共 __get() {
        返回 $this->bar;
    }
}

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

类Foo {
    私人$酒吧;

    公共设置栏($值){
        $this->bar = $值;
    }

    公共getBar(){
        返回 $this->bar;
    }
}

如果您想使用 __get 和 __set 访问外部成员,您也可以将成员设为公开 - 所以我不明白它的含义。你能告诉我(也许有一个例子)这两种方法的意义是什么?

4

1 回答 1

1

您开发您的程序,并且您认为您不必控制对属性的访问。因此,您将 public 而不是 private 。但是在维护期间,您意识到您需要更改您的类以施加约束,从而禁止将属性设为 0。要进行此更改,您需要添加一个 setter 并私下使用您的属性。结果:您需要将此更改影响到所有此类客户。

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

于 2016-04-11T07:24:42.397 回答