我一直在最近的代码中看到这种格式,甚至在这里:
class Class {
function this() {}
}
而不是
class Class {
[public/private/protected] function this() {}
}
答案 0 :(得分:9)
当你声明一个没有任何默认公开的关键字的函数时。
不建议始终指定 功能范围?
如果要将它们用作私有或受保护,则必须定义函数范围。
第一种方法不是旧方法吗?
如果它们仍被PHP接受,那么旧的和新的是什么。
在第一种方法中,如何 定义私有和受保护 功能
你不能用第一种方法来使用关键词。
答案 1 :(得分:3)
答案 2 :(得分:2)
PSR-2编码标准明确要求可见性修饰符同时用于properties和methods。
不需要使用public
,因为PHP 5和7向后兼容版本4,版本4只能公开查看所有内容,因此它是默认设置。
但是,省略它会引发问题 - 就像你做的那样。人类非常擅长检测模式中的模式和错误。您如何看待在任何地方使用protected
或private
的代码(因为您必须),但随机省略public
。这是一个错误吗?这是故意做的吗?应该触发什么样的秘密行为?或者这仍然是PHP4代码隐藏了一些讨厌的兼容性问题?作为开发人员,您不想提出这些问题,并且您不希望必须找到答案。
public
是可选的,但PSR-2决定要求它。遵循标准建议。
另请注意,属性已a proposal to deprecate and remove the var
modifier,并完全将其替换为public
。该提案还列出了Packagist上排名前10位的软件包的代码分析,指出此代码库中94%的所有类仅使用public
,其余6%的类使用var
来自四个更大的软件包,很可能仍然试图兼容PHP4," Simpletest" (针对PHP 4的单元测试框架)处于领先地位。
对于我所知道的方法,可见性修饰符没有这样的静态代码分析,但趋势清晰可见:摆脱旧的PHP4-isms。
答案 3 :(得分:1)
public
可见性修饰符。private
或protected
成员。答案 4 :(得分:0)
PHP诞生时是一种(懒惰的,duck typed)脚本语言,人们仍然以这种方式使用它。大多数PHP程序员都不知道OOP是什么,我非常清楚这个问题,因为我从PHP开始,这确实花了我很多工作。你看到的大约90%的PHP代码在面向对象,可读性,封装等方面都是凌乱和过时的......至少有50%是纯粹的垃圾。 :(
我不能告诉你,当发现“依赖注入”实际上被PHP开发人员视为一种创新设计模式时,有多少OOP程序员会感到惊讶,并且需要对其进行解释。
但是,PHP4没有范围运营商如私有或受保护。那时,您曾经声明一个方法在方法名称前加上一个或多个下划线,以表明它不是要从外部类调用。
答案 5 :(得分:0)
最重要的PHP4兼容性和亲和力。
一些开发人员(像我一样)省略了辅助功能修饰符,因为它们对脚本语言几乎没有影响。 Python或Javascript等真正的OOP语言没有private
或protected
属性,也不需要它。在PHP中它有点不同,但 总是 应用那个语法糖是没有意义的。我个人会将其保留用于有用的应用程序。
许多PHP编码器都不知道“封装”的最初目的,因为它不适用于逻辑可见性之外的未编译代码。它实际上在PHP中增加了一点脆弱性,因为它在运行时而不是编译时(例如在C ++中)引发错误。
而且我再也不能拒绝这样说了:很多程序员也只是将它作为cargo cult programming idiom应用来模拟类似Java的语法(以弥补PHP感知/过去缺少OOP结构)。