41


4

「パブリックスタティック」または「スタティックパブリック」

PHPの関数宣言キーワードに関する小さな点:静的なクラスメソッドを持っている場合、 + static +`キーワードは可視性キーワード( `+ public ++ protected +、 `+ private `の前または後に来る必要があります)? すべてのメソッド(静的またはそれ以外)に可視性キーワードがあると仮定すると、可視性キーワードは ` 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() {}

また、メソッドが静的である場合は、最初に見たものにすることをお勧めします。これは、visibilityキーワードよりも、そのメソッドの種類に大きな影響を与えるためです。

機能上または設計上の影響は明らかにないため、これは厳密に読みやすさの問題です。 (私が考えることができること)

7 Answer


45


  • JavaやC#のような言語では、アクセス修飾子が最初にくることが必要です。* *編集:*前の打たれた行は完全に誤りです。 どちらの言語にもこの要件はありません。

'' '' '

パブリックスタティック

私には正しく見えます。 どちらのアプローチにも議論をすることができ、それは私のこれです: "static"はアクセス修飾子ではなく関数を限定するので、言うのがより理にかなっています

静的

あなたがそれを「静的」の意味を中心にした反対の方法で使うならば、あまり明確ではありません。


45


PSR-2から:

_ すべてのプロパティとメソッドで可視性を宣言する必要があります。可視性の前に抽象および最終を宣言する必要があります。可視性の後にstaticを宣言する必要があります。 [reference] _

…​if you are one to care about the PHP Framework Interop Group standard そして慣習。

したがって、それらによると、「+ static static 」は「 static public +」ではありません。


10


https://stackoverflow.com/a/1507818/205814[Alexei Tenitskiの回答]
このようにすると、クラス内で静的メソッドを見つけるのが簡単になるので、静的パブリックを好む。

すべてのメソッドはそれらの可視性を指定されるべきです。 だから、私たちはすべての方法が定義のどこかに述べられているものを持つことになるということを知っています、唯一の問題は「それはどの設定ですか?

静的なのは一部だけなので、それぞれについて「定義のどこかにstaticキーワードについての言及はありますか」と尋ねる必要があります。 だから、その質問への答えをより明確にするために最初にstaticを置く。

または、もっと広い原則として…​…​…​ 無意識のうちにそれらを読むときに物事をスキップしないように、私は「最も異常な側面を最初に」と置く傾向があります。 ; o)

このテストを試してください。

すぐに…​クラスAにはいくつの静的メソッドがありますか?

クラスA {public static methodA(){} protected static methodB(){} private staticlymethodC(){}}

クラスBには静的メソッドがいくつありますか。

クラスB {public methodA(){}静的保護されたmethodB(){}静的プライベートmethodC(){}}

クラスBの方が早く理解しやすいと思います。


9


これは厳密にはPHPの問題ではないと私は思いますが、それが価値があることを少しだけ考えるために、私は常に可視性修飾子を最初に置くことの一貫性を好みました。 私はそれがスキャンしやすいと思います。


5


私は、型修飾子を持つ私が使用するすべての言語において、最初に可視性を考えます。


5


私は `+ static public +`を好みます。これは、この方法でクラス内の(通常は稀な)静的メソッドを見つけやすくするためです。


1


あなたはそれがコードに影響を及ぼさないという点で正しいです。 ですから、あなたがしていることに関しては、あなた自身のスタイルの要求、あるいはあなたのチームの要求次第です。 彼らと相談して、スタイルについて同意してください。

自分自身のためだけにコーディングしているのなら、自分のために選ぶべきです。 選択は重要ではありませんが、一貫性は重要です。

あなたが尋ねるかもしれない別の質問は、あなたが「公の」を使うべきか、そうではないのですか? 後方互換性のため(PHP4は情報を隠すことができませんでした)、可視性修飾子なしのものはデフォルトでpublicです。 それが公にされている場合、あなたは公に書くことを邪魔するべきですか? もう一度個人的な選択:どちらかの方法で強い議論をしてください、そしてあなたは私にあなたの選択が最善であると納得させるでしょう。

個人的には、自分のコードを調べてクリーンアップするときには、最初に可視性修飾子を置き、それがパブリックであってもそれを指定します。