有什么理由不使用关键字public,private,protected php?
故事:我已经开始了一个项目,该团队在他们的代码中积极使用访问修饰符(甚至是明确的“公共”),并想说服我这样做。我总是觉得这种东西在像php这样的动态语言中完全没用,但我意识到我的直觉在技术讨论中几乎不是一个论点。因此,我正在寻找一个可靠,清晰的解释为什么访问修饰符在php中无用(甚至有害)。
我知道已经存在一些类似的主题
然而,我发布这个
的原因有几个TIA
答案 0 :(得分:8)
有效的理由不使用关键字public,private,php in protected?
答案 1 :(得分:8)
private
修饰符是 - imho - 极度过度使用。它的问题在于它无法扩展类。但更重要的是,它是一个概念,导致人们编写面向类的代码,而不是面向对象的代码。
对于属性,我没有protected
的牛肉。事实上,我认为它应该是唯一使用的范围。 protected
方法通常很麻烦,因为它会使测试变得更难。
答案 2 :(得分:4)
在像PHP这样的动态语言中,假设程序员知道代码是如何工作的。这意味着程序员知道要调用哪些方法,哪些方法不应该直接调用。
这与无类型变量类似:在类型化语言中,每个变量都是显式类型的,但在PHP中,假设程序员知道每个变量的类型。
答案 3 :(得分:4)
mario钉了它(从评论中复制)
访问修饰符在Java / C ++和编译代码中是有意义的,它们是可执行的。在未编译的脚本语言中,它们很容易被删除。因此,它们应该被视为装饰器,因此实际上可以实现为编码约定。 (请参阅Python中的undercoritis,以及几乎任何其他脚本语言。与其无用的访问装饰器相比,PHP非常独特。)
你不会有太多成功说服你的队友有用的API优于限制性封装的优势。使用语法强制访问装饰器通常是货物崇拜驱动的。