关于PHP中函数声明关键字的一个小问题:如果你有一个静态的类方法,那么static
关键字应该位于可见性关键字(public
之前或之后,{{1} ,protected
)?假设您的所有方法(静态或其他方式)都有可见性关键字,那么您希望可见性关键字与private
关键字保持在同一位置:
function
现在假装一对夫妇是静止的:
public function foo() {}
public function bar() {}
protected function baz() {}
private function quux() {}
此外,如果某个方法是静态的,那么您希望它是第一个事物,因为它对可用的方法产生的影响远远大于可见性关键字的影响。< / p>
这严格来说是一个可读性问题,因为它显然没有任何功能或设计后果。 (我能想到的。)
答案 0 :(得分:46)
来自PSR-2:
必须在所有属性和方法上声明可见性;抽象 最终必须在能见度之前宣布;必须是静态的 在能见度之后宣布。 [reference]
...如果您是关心PHP Framework Interop Group标准和惯例的人。
因此public static
而不是static public
。
答案 1 :(得分:45)
像Java和C#这样的语言要求访问修饰符首先出现 编辑:上一个被删除的行是完全错误的。这两种语言都没有这个要求。
public static
对我来说是正确的。可以对两种方法进行争论,我的是:由于“静态”限定了函数而不是访问修饰符,因此更有意义地说
<access_modifier> static
如果你使用它,那么围绕“静态”含义的另一种方式则不太清楚。
答案 2 :(得分:10)
I prefer static public since this way
it is easier to spot [usually rare] static methods in classes.
所有方法都应该指定其可见性。所以,我们知道每个方法都会在定义中提到某个方法,唯一的问题是&#34;它的设置是什么?&#34;。
只有一些是静态的 - 所以,对于每一个我们都要问&#34;在定义的某处是否提到了static关键字?&#34;。所以,先把静态放在第一位,使这个问题的答案更加明显。
或者,作为一个更广泛的规则,.........我倾向于将“最特别的方面”放在第一位。这样我在阅读时就不会潜意识地跳过一些东西。 ; O)
试试这个测试。
很快...... A类中有多少静态方法?
class A {
public static methodA() {
}
protected static methodB() {
}
private staticlymethodC() {
}
}
B类中有多少静态方法?
class B {
public methodA() {
}
static protected methodB() {
}
static private methodC() {
}
}
我认为B类更容易理解。
答案 3 :(得分:9)
我认为这不是一个严格的PHP问题,而且对于它的价值很小,我总是倾向于首先放置可见性修饰符的一致性。我觉得扫描更容易。
答案 4 :(得分:5)
我首先将可见性放在我使用的每种具有类型修饰符的语言中。
答案 5 :(得分:5)
我更喜欢static public
,因为这样更容易在类中发现[通常很少见的]静态方法。
答案 6 :(得分:1)
你是对的,因为它对代码没有影响。因此,根据您自己的风格要求或您团队的风格要求,您需要做什么。咨询他们并就风格达成一致。
如果您只为自己编码,那么您应该自己选择。选择并不重要,但一致性是。
您可能会问的另一个问题是:您是否应该使用“公开”?为了向后兼容(PHP4没有信息隐藏),默认情况下,没有可见性修饰符的任何内容都是公共的。如果是公开的,你是否应该打扰公众写作?再次个人选择:以任何一种方式提出强有力的论据,你会说服我你的选择是最好的。
就个人而言,当我查看并清理自己的代码时,我想首先放置可见性修饰符,并指定它,即使它是公开的。