为什么在OO PHP中不经常使用私有变量和方法?

时间:2019-04-17 20:21:35

标签: php oop coding-style

来自Java背景,通常尽可能多地使用私有变量和方法是正常的。在深入了解PHP生态系统之后,我注意到实际上private的使用非常少,并且经常被protected取代。我已经在Drupal,Laravel和Symfony组件的源代码中注意到了这种趋势。

这是为什么?

1 个答案:

答案 0 :(得分:3)

这取决于您要构建的内容。您的示例是开放源代码框架,其他人可能会在使用它们时扩展和覆盖所提供的功能。没有什么比在那里拥有私有方法更令人烦恼了,您只需要重写所有内容即可在框架中进行微小的更改。

除此以外(即您自己的项目,例如对于您的公司而言,您不开源),世界看上去截然不同:这是一个哲学问题,即您的方法是开放还是封闭。如果您遵循SOLID principles,则应将其打开以进行扩展,但应关闭以进行修改。我喜欢这种方法,并且大多数情况下使所有内容“尽可能安全”,并且只允许在需要的地方进行访问,是的,在PHP中。

所以TL; DR:取决于用例,但是也应该使用private IS和imho。

附带说明/有趣的事实:访问特定对象在PHP的类级别上工作,而不是在对象级别上工作,因此传递给相同类的另一个对象的同一个对象可以访问其私有成员,反之亦然。