PHP: Hypertext Preprocessor

クラスとオブジェクト

オブジェクト指向のPHPはクラスとオブジェクトをサポートしている。以下にクラス等オブジェクトの例をあげる。
<?php
class abc
{
	public $a = null;
	public function b()
	{
		echo "abcクラスbメソッド", PHP_EOL;
		return "戻値:abc->b";
	}

	public function abc()
	{
		echo "abc:コンストラクタ生成", PHP_EOL;
	}
}

class def extends abc
{
	public function def()
	{
		echo "def:コンストラクタ生成 > ";
		echo "def再定義メソッド(継承):", parent::b(), PHP_EOL;
	}

	public function b()
	{
		echo "オーバーライドされたbメソッド", PHP_EOL;
	}
}

$c = new abc();
$c->b();
$f = new def();
$f->b();
?>
PHPに於けるコンストラクタ生成の演算子はnewである。extendsでクラスの継承が可能であるが多重継承はサポートされていない。メンバ変数を宣言し定義する際にはprivate・public・protected(アクセス権)を用いる(過去のバージョンでは var が使われていた)。echoは続くオブジェクトを文字列として出力するPHPの文書構造である。parentは継承されたメソッドが、インスタンスされオーバーライドされた結果、継承されなかったメソッドを参照出来る。ここでdefクラスに継承されたメソッドはabc->bメソッドであり、def->bメソッドにより上書きされている。出力結果は以下の様になる。
abc:コンストラクタ生成
abcクラスbメソッド
def:コンストラクタ生成 > abcクラスbメソッド
def再定義メソッド(継承):戻値:abc->b
オーバーライドされたbメソッド


戻る