“公共静态”还是“静态公共”?

关于PHP中函数声明关键字的一个小问题:如果你有一个静态类方法, static关键字应该在可见性关键字之前还是之后( publicprotectedprivate )? 假设你所有的方法,静态或其他,有一个可见性关键字,那么你会希望可见性关键字保持在相对于function关键字相同的地方:

 public function foo() {} public function bar() {} protected function baz() {} private function quux() {} 

现在假装一对夫妇是静态的:

 public function foo() {} static public function bar() {} protected function baz() {} static private function quux() {} 

另外,如果一个方法是静态的,那么你就希望这是第一个被看到的东西,因为这对于什么types的方法甚至比可见性关键字有更多的影响。

这是严格的可读性问题,因为它显然没有function或devise后果。 (我能想到)

像Java和C#这样的语言要求访问修饰符是第一位的 编辑:以前的敲击线是完全错误的。 这两种语言都没有这个要求。


 public static 

看起来对我是正确的。 可以为两种方法进行争论,我的是这样的:因为“静态”限定了函数而不是访问修饰符,所以说更有意义

 <access_modifier> static 

如果使用它,“静态”的含义则不太清楚。

从PSR-2:

可视性必须在所有属性和方法上声明; 抽象和最终必须在可见性之前进行声明; 静态必须在可见性之后声明。 [参考]

…如果你是一个关心PHP框架Interop组的标准和惯例。

所以public static不是根据他们static public

我不认为这是一个严格的PHP问题,对于什么是值得的,我总是首选放置可见性修饰符的一致性。 我发现它更容易扫描。

除了Alexei Tenitski的回答 。

 I prefer static public since this way it is easier to spot [usually rare] static methods in classes. 

所有方法都应该具有指定的可见性。 所以,我们知道每个方法都会在定义中有所提及,唯一的问题是“它是哪一个?”。

只有一些是静态的 – 所以,对于每一个我们不得不问“在定义的某处是否提到了static关键字?”。 所以,先把静态的做出来,让这个问题的答案更加明显。

或者,作为一个更宽泛的规则,我倾向于把“最不寻常的方面放在第一位”,这样我就不会在阅读时不下意识地跳过这些东西。 ; O)

试试这个testing。

非常快… A类有多less种静态方法?

 class A { public static methodA() { } protected static methodB() { } private staticlymethodC() { } } 

B类有多less个静态方法?

 class B { public methodA() { } static protected methodB() { } static private methodC() { } } 

我觉得Bclass很容易理解。

我使用具有types修饰符的每种语言都将可见性放​​在第一位。

我更喜欢static public因为这样更容易在类中find[通常很less]的静态方法。

你是正确的,它对代码没有影响。 因此,根据你自己的风格要求或者你的团队的风格要求来决定你的工作。 咨询他们,并就风格达成一致。

如果你只是为自己编码,那么你应该自己select。 select并不重要,但一致性是。

您可能会问的另一个问题是:您是否应该使用“公开”? 为了向后兼容(PHP4没有信息隐藏),没有可见性修饰符的东西默认是公共的。 如果公开的话,你是否应该公开写作? 再一次的个人select:无论哪种方式都有强烈的论点,你会说服我,你的select是最好的。

就个人而言,当我经历并清理自己的代码时,我喜欢首先将可见性修饰符,并指定它,即使它是公开的。