クラスのメンバ変数のことを「プロパティ」といいます。 それ以外に「属性」「フィールド」などという呼びかたを見たことがあるかもしれません。 しかし、このマニュアルでは「プロパティ」と呼ぶことにします。 プロパティを定義するには 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
{
// 無効なプロパティ宣言
public $var1 = 'hello ' . 'world';
public $var2 = <<<EOD
hello world
EOD;
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;
}
?>
注意:
クラスやオブジェクトを操作するための便利な関数が用意されています。 クラス/オブジェクト関数 を参照ください。
ヒアドキュメント とは異なり、 nowdocs は任意の静的データコンテキストで使えます。プロパティの宣言時にも使用可能です。
例2 nowdoc を使ったプロパティの初期化
<?php
class foo {
// PHP 5.3.0 以降
public $bar = <<<'EOT'
bar
EOT;
}
?>
注意:
Nowdoc は PHP 5.3.0 以降で使用可能です。