46

PHP の関数宣言キーワードに関するマイナー ポイント: 静的なクラス メソッドがある場合、staticキーワードは可視性キーワード ( public, protected, private) の前または後に来る必要がありますか? static であろうとなかろうと、すべてのメソッドに可視性キーワードがあると仮定すると、可視性キーワードをキーワードに対して同じ場所に残す必要があります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() {}

また、メソッドが static である場合は、それが最初に表示されるようにする必要があります。これは、可視性キーワードよりもメソッドの種類に大きな影響を与えるためです。

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

4

7 に答える 7

54

PSR-2 から:

すべてのプロパティとメソッドで可視性を宣言する必要があります。abstract および final は可視性の前に宣言する必要があります。static は可視性の後に宣言する必要があります。[参照]

...PHP Framework Interop Group の標準と規約に関心がある場合。

彼らによればそうpublic staticではありませんstatic public

于 2014-08-29T05:38:54.823 に答える
46

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


public static

私には正しいように見えます。両方のアプローチで引数を作成できますが、私の場合は次のとおりです。「静的」はアクセス修飾子ではなく関数を修飾するため、言う方が理にかなっています

<access_modifier> static

逆に使用すると、「静的」の意味がわかりにくくなります。

于 2009-04-16T18:25:40.873 に答える
12

Alexei Tenitskiの答えにさらに。

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

すべてのメソッドは可視性を指定する必要があります。したがって、すべてのメソッドの定義のどこかに言及されていることがわかっています。唯一の質問は、「どの設定ですか?」ということです。

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

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

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

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

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

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

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

クラスBはすぐに理解するのがはるかに簡単だと思います.

于 2012-04-01T16:48:57.510 に答える
9

これは厳密に PHP に関する質問だとは思いません。また、その価値はわずかですが、可視性修飾子を最初に配置するという一貫性を常に優先してきました。スキャンしやすいと思います。

于 2009-04-16T18:25:50.593 に答える
5

static publicこの方法の方が、クラス内の [通常はまれな] 静的メソッドを見つけやすくなるため、私は好んで使用します。

于 2009-10-02T05:11:43.673 に答える
5

型修飾子を持つすべての言語で、可視性を第一に考えています。

于 2009-04-16T18:31:07.520 に答える
1

コードに影響を与えないという点であなたは正しいです。したがって、何を行うかは、あなた自身のスタイル要件、またはチームのスタイル要件次第です。彼らと相談して、スタイルに同意します。

自分のためだけにコーディングする場合は、自分で選択する必要があります。選択は重要ではありませんが、一貫性は重要です。

もう 1 つの質問として、'public' を使用する必要があるかどうかがあります。下位互換性 (PHP4 には情報を隠す機能がありませんでした) のために、可視性修飾子のないものはすべてデフォルトで公開されます。公開ならわざわざ公開と書くべきですか?繰り返しますが、個人的な選択です。いずれかの方法で強力な議論を行ってください。そうすれば、あなたの選択が最善であると私に納得していただけるでしょう。

個人的には、自分のコードを調べてクリーンアップするときは、可視性修飾子を最初に置き、公開されている場合でもそれを指定するのが好きです。

于 2009-04-17T17:33:58.413 に答える