PHPのコンストラクタについてのメモ

プログラム
date 2012.12.02 tag 未設定
PHPのコンストラクタ、最近使う機会が増えてきたので整理してみます。
コンストラクタの使い方、仕様についてメモっていきます。

コンストラクタ = 初期値設定

PHPのコンストラクタはクラスを実体化(new)したときに、自動的に呼び出されるメソッドのようなもの。引数を設定することができ、それをメンバ変数に代入するのによく使います。
コンストラクタを定義するときは、下記の2つの方法があります。

PHPバージョン 方法
PHP4以降 クラス名と同じ名前のコンストラクタを定義
PHP5 「__construct」という名前で定義

たとえばこんなコード。今回のコードはPHP4以降で動作する、クラス名と同様のTestというコンストラクタを用意してます。

Testクラス

[php]
class Test
{
//メンバ変数
public $member;

//コンストラクタ
public function Test($param1)
{
$this->member = $param1;
}

//メンバ変数出力メソッド
public function showMember()
{
echo ‘メンバー変数は’ . $this->member . ‘です。’;
}
}
[/php]

使用例

[php]
$test = new Test(‘hello’);
$test->showMember();
[/php]

Result

メンバー変数はhelloです。

クラスをnewした時点でコンストラクタが呼び出され、メンバ変数memberに値が格納されています。

コンストラクタは明示的に呼び出せない

メソッドはアロー演算子(->)によって呼び出して返り値を格納することができますが、コンストラクタは自分の好きなタイミングで呼び出すことができません。newしたときも格納する変数には、コンストラクタではなくオブジェクトが格納されるのです。

さっきのTestクラスのインスタンス、$testをvar_dumpするとこのようになります。object型の配列が表示されます。

[php]
object(Test)#1 (0) {
}
[/php]

返り値は返さない

コンストラクタはメソッドと違って値を返せません。実体化するときに必ず呼び出されることで便利なのですが、このように帰り値を伴う処理を入れるのはNGです。

[php]
class Test
{
public Test()
{
if ($_GET[‘action’] == ‘show’) {
echo ‘表示して終了’;
return true;
}
}
}
[/php]

エラーはでませんが、上記コードは意味なしです。コンストラクタは値を返すことができないので「true」の値をどこからも判断することができません。