PHP _get & _get 或每个变量的唯一获取和设置函数?

标签 php get set encapsulation accessor

PHP 内置了 _get 和 _set 函数。是为每个变量编写自己的 get 和 set 函数更好,还是使用带有大量 if else if 的内置函数?每种方法的优缺点是什么?

最佳答案

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

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

魔术方法使我能够通过将属性重命名为 _name 并将其设为私有(private)来解决问题,强制所有请求都通过 getter 和 setter 对该属性进行请求。

也就是说,如果您只是将属性视为变量,则不需要 getter 和 setter。在这种情况下,只需将属性公开即可!

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

关于PHP _get & _get 或每个变量的唯一获取和设置函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3081829/

相关文章:

Python 未全部运行

javascript - 谷歌地图更新标记位置而不删除它们

azure - 使用 get 和 body 参数调用嵌套的 Azure 逻辑应用

mysql - JSP 和 Servlet 的 CRUD 应用程序的 doPost() 或 doGet() 方法?

Python isDisjoint() 运行时

python - 迭代时从集合中删除项目

php - PDO 没有连接到远程 mysql 数据库

PHP - echo <br>

php - 如何使用变量来处理 Jquery 选择器

javascript - Angular 从 $http 请求获取数据给出未定义