コンストラクター
PHP 5 では、開発者がクラス内のコンストラクターとしてメソッドを定義できます。コンストラクターを持つクラスは、オブジェクトが作成されるたびにこのメソッドを呼び出すため、オブジェクトを使用する前に初期化作業を行うのに非常に適しています。
注:
コンストラクターがサブクラスで定義されている場合、その親クラスのコンストラクターは秘密裏に呼び出されません。親クラスのコンストラクターを実行するには、子クラスのコンストラクターでparent::__construct()を呼び出す必要があります。 (??他の言語とは明らかに違う??)
例 10.8. 新しい標準コンストラクターの使用
class BaseClass {
function __construct() {
“In BaseClassconstructorn”
}
}
class SubClass extends BaseClass {
function __construct () {
parent::__construct();
print "In SubClass constructionorn";
$obj = new BaseClass();
$obj = new SubClass();クラス内で __construct() 関数を見つけると、クラスと同じ名前の関数である古いスタイルのコンストラクターを見つけようとします。したがって、互換性の問題が発生する唯一の状況は、クラスに __construct() という名前のメソッドがすでに存在するが、それがコンストラクターではない場合です。
デストラクター
PHP 5 では、C++ などの他のオブジェクト指向言語と同様のデストラクターの概念が導入されました。デストラクターは、オブジェクトへのすべての参照が削除されるか、オブジェクトが明示的に破棄されるときに実行されます。
例 10.9. デストラクターの例
class MyDestructableClass {
function __construct() {
$this->name = "MyDestructableClass" }
function __destruct() { $ this->name . "n";
}
}
$obj = new MyDestructableClass();
コンストラクターと同様に、親クラスのデストラクターはエンジンによって秘密裏に呼び出されません。親クラスのデストラクターを実行するには、parent::__destruct() を子クラスのデストラクター本体で明示的に呼び出す必要があります。 (??明らかに他の言語とは異なります??)
注:
デストラクターは、スクリプトが閉じられたとき、つまりすべてのヘッダー情報が送信されたときに呼び出されます。
注意:
デストラクターで例外をスローしようとすると、致命的なエラーが発生します。
以上、PHP: クラスとオブジェクト 3 のコンストラクターとデストラクターの基礎知識を内容も含めて紹介しましたが、PHP チュートリアルに興味のある友人の参考になれば幸いです。