PHP的_get&_set或每个变量的唯一get和set函数?

Jos*_*ren 6 php encapsulation get accessor set

PHP内置了_get和_set函数.为每个变量编写自己的get和set函数是否更好,或者使用内置函数和if if if if?每种方法的优缺点是什么?

web*_*ave 4

__get__set是通常应该用来解决困难问题而不是作为设计基础的魔术方法。

例如,我发现自己在一个项目中,我必须分析一个使用具有深度继承 (> 2) 的 OOP 的站点,并且一个重要的基类有一个名为 的公共属性name。然而,它也有 getter 和 setter ( getName, setName),它们访问该属性的目的只是为了获取和设置它。许多类调用getName并且同样多的类name直接访问该属性!不是很棒的设计。

_name这些神奇的方法使我能够通过将属性重命名为 private 并强制通过 getter 和 setter 对属性发出所有请求来解决问题。

话虽这么说,如果您只是将属性视为变量,则不需要 getter 和 setter。既然如此,就把财产公之于众吧!

在您的情况下,由于正在进行验证/清理,您应该使用 getter 和 setter 并将它们直接编码为方法(而不是不必要地产生魔术方法的开销)。