在php中避免访问修饰符的原因

时间:2010-09-16 09:59:25

标签: php oop private public protected

有什么理由不使用关键字public,private,protected php?

故事:我已经开始了一个项目,该团队在他们的代码中积极使用访问修饰符(甚至是明确的“公共”),并想说服我这样做。我总是觉得这种东西在像php这样的动态语言中完全没用,但我意识到我的直觉在技术讨论中几乎不是一个论点。因此,我正在寻找一个可靠,清晰的解释为什么访问修饰符在php中无用(甚至有害)。

我知道已经存在一些类似的主题

然而,我发布这个

的原因有几个
  • 我不是在问我是否应该使用“公开”。我已经没有使用它了。
  • 我明显不感兴趣听到为什么访问修饰符是好的(我知道他们是坏的,我只需要专家来确认)。
  • 如果您要告诉我“最佳做法”和“OOP原则”,请不要打扰。

TIA

4 个答案:

答案 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优于限制性封装的优势。使用语法强制访问装饰器通常是货物崇拜驱动的。