| ユーザフォーラムで議論/質問 | マニュアル検索 | ハイライト | ハイライトオフ | ポータル | php spot |
コンストラクタとデストラクタコンストラクタPHP 5 では、開発者がクラスのコンストラクタメソッドを宣言することが できます。コンストラクタメソッドを有するクラスは、新たにオブジェクトが 生成される度にこのメソッドをコールします。これにより、 そのオブジェクトを使用する前に必要な初期化を行うことができます。
例1 新しい統一されたコンストラクタを使用する
<?php PHP 3 や PHP 4 との下位互換性を維持するため、もし PHP がクラスの __construct() 関数を見つけられない場合は、 古い形式のコンストラクタ (つまりクラス名と同じ名前の関数)を捜します。 事実上、互換性の問題が発生する可能性があるのは、 そのクラスが __construct() という名前のメソッドを 異なる用途で用いてる場合だけです。 警告
古い形式のコンストラクタは PHP 7.0 で 非推奨 となりました。 将来のバージョンで削除されるでしょう。新しいコードでは常に __construct() を使うべきです。
他のメソッドと異なり、親の __construct()
と異なるパラメータで __construct()
をオーバーライドしても PHP は
PHP 5.3.3 以降、名前空間つきのクラス名の最後の部分と同じ名前のメソッドは コンストラクタとみなされなくなりました。 名前空間を使っていないクラスは今までと変わりません。 例2 名前空間つきのクラスのコンストラクタ
<?php デストラクタ
void __destruct
( void
)
PHP 5 では、C++ のような他のオブジェクト指向言語に似た概念のデストラクタが 導入されました。デストラクタメソッドは、 特定のオブジェクトを参照するリファレンスがひとつもなくなったときにコールされます。 あるいは、スクリプトの終了時にも順不同でコールされます。 例3 デストラクタの例
<?php コンストラクタと同様、親クラスのデストラクタがエンジンにより暗黙のうちに コールされるということはありません。親クラスのデストラクタを実行するには、 デストラクタの中で明示的に parent::__destruct() をコールする必要があります。 また、コンストラクタと同様、子クラスでデストラクタを定義していない場合は 親クラスのデストラクタを継承します。 exit() でスクリプトの実行を止めた場合にもデストラクタはコールされます。 デストラクタの内部で exit() をコールすると、 それ以降のシャットダウンルーチンを実行しません。
|
各種マニュアル:
PHPマニュアル |
PEARマニュアル |
Smarty(英語)マニュアル |
PHP-GTKマニュアル |
「コンストラクタとデストラクタ」をGoogle検索
|