コンマは public $foo = 6, $bar; で何をしますか?
これにより、2 つのクラス プロパティ$foo
(デフォルト値 6) と$bar
(デフォルト値null
) を同じアクセス修飾子で宣言できます。次public
のように、2 回繰り返す必要はありません。
public $foo = 6;
public $bar;
ちなみに、この値を文字列(空文字列)no output
に変換した結果です。null
public を削除すると、IDE でエラーが発生するのはなぜですか?
アクセス修飾子を指定せずにプロパティを指定することはできないためです。ドキュメントの引用:
クラスのメンバー変数は「プロパティ」と呼ばれます。public
[...] これらは、 、protected
、またはのいずれかのキーワードを使用して定義されprivate
、その後に通常の変数宣言が続きます。[...]
PHP 4 との下位互換性を維持するために、PHP 5var
ではプロパティ宣言でpublic
、protected
、または の代わりに (または追加で) キーワードの使用を引き続き受け入れprivate
ます。var
代わりにを使用してプロパティを宣言すると、PHP 5 はそのプロパティを として宣言されているかのように扱いますpublic
。
つまり、 を使用しない限りvar
、PHPにはメンバー変数default access modifier
に対する (または の特別な処理) というものはありません。そして、はい、それは一種の矛盾です-メンバー関数はアクセス修飾子なしで定義できるためです(その場合、それらはとして処理されます)。no access modifier
public
...そして、それが、その紛らわしいunexpected T_VARIABLE, expecting T_FUNCTION
エラーメッセージの理由です。その$foo = 6
ステートメントは、最終的には関数宣言として扱われます。