クラスのメンバ変数のことを「プロパティ」といいます。 それ以外に「属性」「フィールド」などという呼びかたを見たことがあるかもしれません。 しかし、このマニュアルでは「プロパティ」と呼ぶことにします。 プロパティを定義するには public、protected あるいは private のいずれかのキーワードのあとに通常の変数の宣言を続けます。 宣言時に初期値を設定することもできますが、初期値は定数値でなければなりません。 つまり、コンパイル時に評価可能な値でなければならず、 実行時の情報がないと評価できない値であってはいけないということです。
public、protected そして private についての詳しい情報は アクセス権 を参照ください。
注意:
PHP 4 との互換性を考慮して、PHP 5 でも var を使ったプロパティの宣言が可能です。これは public や protected、 private と組み合わせて使うこともできます。 しかし、もはや var は必須ではありません。 PHP 5.0 から 5.1.3 までのバージョンでは、 var の使用は非推奨とされており、
E_STRICT
警告が発生していました。 しかし PHP 5.1.3 以降は非推奨ではなくなり、警告も出なくなっています。public や protected、 private のかわりに var を使ってプロパティを宣言した場合、PHP 5 はそれを public と同等とみなします。
クラスメソッドから静的でないプロパティにアクセスするには -> (オブジェクト演算子) を使って $this->property のようにします (property のところにプロパティ名を指定します)。 静的なプロパティへのアクセスには :: (ダブルコロン) を使って self::$property のようにします。 静的なプロパティとそうでないプロパティの違いについては、 static キーワード を参照ください。
クラスメソッドがオブジェクトのコンテキストからコールされたときには、 擬似変数 $this が常に使えます。 $this は、呼び出し元のオブジェクト (通常はそのメソッドが属するオブジェクトですが、別のオブジェクトになる可能性もあります。 別のオブジェクトのコンテキストから 静的に コールされた場合などです) への参照となります。
例1 プロパティの宣言
<?php
class SimpleClass
{
// PHP 5.6.0 以降で使える方式
public $var1 = 'hello ' . 'world';
// PHP 5.3.0 以降で使える方式
public $var2 = <<<EOD
hello world
EOD;
// PHP 5.6.0 以降で使える方式
public $var3 = 1+2;
// 無効なプロパティ宣言
public $var4 = self::myStaticMethod();
public $var5 = $myVar;
// 有効なプロパティ宣言
public $var6 = myConstant;
public $var7 = array(true, false);
// PHP 5.3.0 以降で使える方式
public $var8 = <<<'EOD'
hello world
EOD;
}
?>
注意:
クラスやオブジェクトを操作するための便利な関数が用意されています。 クラス/オブジェクト関数 を参照ください。
PHP 5.3.0 以降、 ヒアドキュメント や nowdocs は任意の静的データコンテキストで使えます。プロパティの宣言時にも使用可能です。
例2 nowdoc を使ったプロパティの初期化
<?php
class foo {
// PHP 5.3.0 以降
public $bar = <<<'EOT'
bar
EOT;
public $baz = <<<EOT
baz
EOT;
}
?>
注意:
Nowdoc とヒアドキュメントは PHP 5.3.0 以降で使用可能です。