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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么在OO PHP中不经常使用私有变量和方法? [关闭]相关的知识,希望对你有一定的参考价值。

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

为什么是这样?

答案

这取决于你正在建设什么。您的示例是开源框架,其他人可能希望在使用它时扩展并覆盖提供的功能。没有什么比在那里拥有私有方法更烦人了,你只需要重写所有内容,以便在框架中做一点改变。

除此之外(即你自己的项目,就像你的公司一样,你没有开源),这个世界看起来很不一样:这里的哲学问题是你的方法是开放的还是封闭的。如果你跟随SOLID principles,它们应该是开放的延伸,但是关闭修改。我喜欢这种方法,并且主要使所有内容“尽可能安全”,并且只允许访问我需要的地方,是的,在PHP中。

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

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

以上是关于为什么在OO PHP中不经常使用私有变量和方法? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

为什么PHP不允许私有const?

oo第一次总结

PHP的面向对象 — 封装继承多态

PHP,静态变量或私有变量哪个更好?

从 PHP 中的类外部调用私有方法和私有属性

来自孩子的PHP私有变量访问