【发布时间】:2016-04-11 07:19:39
【问题描述】:
今天我读了一篇关于 MVC 的教程,这个人正在使用魔法方法(__get 和 __set())来访问私有成员值。 (LINK) 首先我对 __get 和 __set 做了什么感到困惑,但是在阅读了互联网之后,我终于发现,如果无法从外部访问该成员,则会调用此方法。 到目前为止...
但是这样的代码没有意义:
类Foo {
私人$酒吧;
公共 __set($value) {
$this->bar = $值;
}
公共 __get() {
返回 $this->bar;
}
}
我猜我可以使用普通的 getter 和 setter - 它的 IMO 更容易理解:
类Foo {
私人$酒吧;
公共设置栏($值){
$this->bar = $值;
}
公共getBar(){
返回 $this->bar;
}
}
如果您想使用 __get 和 __set 访问外部成员,您也可以将成员设为公开 - 所以我不明白它的含义。 你能告诉我(也许有一个例子)这两种方法的意义是什么?
【问题讨论】:
-
在您提供的链接中看不到您作为示例编写的任何内容。他使用的是数组,而不是单个属性
$this->vars[$index] = $value;。因此使用__set和__get访问索引中的键的意义是相当合法的。或者你想为每个键写一个访问器? -
没错,但我在不同的教程中也看到过这种情况......而且您也可以使用普通的 getter 和 setter 来设置数组,不是吗?
-
正如我所写,使用它们是合法的,我并没有说使用它们是明智的;)
-
我知道它们可能是合法的,但我完全不明白 =) 无论如何感谢您的回答^^
标签: php oop getter-setter magic-methods member-access