我是 PHP 的新手。出于某种原因,在其他类型的编程语言(如 JAVA)中,我对每个变量使用 setter 和 getter 没有问题,但是当我在 PHP 中编程时,可能是因为它非常灵活,感觉有点像浪费时间。大多数时候将类属性设置为公共(public)并像那样操作它们感觉更简单。问题是,当我这样做时,我觉得我做错了什么并且违反了 OO 原则。
不使用 setter 和 getter 真的有那么错吗?为什么或者为什么不?你们大多数时候是怎么做的?
最佳答案
不使用属性访问器的主要问题是,如果您发现以后需要将字段更改为属性——例如,使其成为子类中的计算属性——您将破坏您的客户应用程序接口(interface)。对于已发布的图书馆,这是 Not Acceptable ;对于内部的,修复问题的工作量相当大。
对于私有(private)代码或小型应用程序,直接使用它可能是可行的。 IDE(或文本编辑器)可让您生成访问器样板并使用代码折叠将其隐藏。可以说,这使得机械地使用 getter 和 setter 变得相当容易。
请注意,某些编程语言具有合成默认字段+getter+setter 的功能——Ruby 通过元编程实现,C# 具有自动实现的属性。 Python 完全回避了这个问题,让您覆盖属性访问,让您将属性封装在需要它的子类中,而不必预先打扰它。 (这是我最喜欢的方法。)
关于php - 不使用 setter 和 getter 真的错了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/808348/