ホームページ  >  記事  >  バックエンド開発  >  phpデストラクタの使い方を詳しく解説

phpデストラクタの使い方を詳しく解説

黄舟
黄舟オリジナル
2017-07-02 10:09:062626ブラウズ

void destruct (void)

PHP 5 では、C++ などの他のオブジェクト指向言語と同様のdestructorの概念が導入されました。デストラクターは、オブジェクトへのすべての参照が削除されるか、オブジェクトが明示的に破棄されるときに実行されます。

デストラクターの例

<?php
class  MyDestructableClass  {
   function  construct () {
       print  "In constructor\n" ;
        $this -> name  =  "MyDestructableClass" ;
   }

   function  destruct () {
       print  "Destroying "  .  $this -> name  .  "\n" ;
   }
}

$obj  = new  MyDestructableClass ();
?>

コンストラクターと同様に、親クラスのデストラクターはエンジンによって秘密裏に呼び出されません。親クラスのデストラクターを実行するには、子クラスのデストラクター本体でparent::destruct()を明示的に呼び出す必要があります。さらに、コンストラクターと同様に、サブクラスは、デストラクターが定義されていない場合、親クラスを継承します。

exit() を使用してスクリプトを終了する場合でも、デストラクターが呼び出されます。デストラクターで exit() を呼び出すと、残りのシャットダウン操作が中止されます。

注:

デストラクターは、すべての HTTP ヘッダーが送信された後、スクリプトが閉じられるときに呼び出されます。スクリプトを閉じたときの作業ディレクトリは、SAPI (Apache など) 内にあるときとは異なる可能性があります。

注:

デストラクター (スクリプトの終了時に呼び出される) で例外をスローしようとすると、致命的なエラーが発生します。

class x
{
 function construct()
 {
  $this->file = fopen(&#39;path&#39;, &#39;a&#39;);
 }
 function destruct()
 {
  fclose($this->file);
 }
}

簡単に言えば、デストラクターはオブジェクトが閉じられるときに特別な作業を完了するために使用されます。たとえば、上で書いた例では、インスタンス化と同時にファイルが開かれますが、いつ閉じられるのでしょうか。使用後にそれを閉じるだけです。したがって、デストラクターはそれを直接閉じるか、または破棄中に、デストラクターが完了する前に処理されたデータの一部をデータベースに書き込むことを検討できます。プロパティはまだ存在しており、内部アクセスにのみ使用されるため、オブジェクトに関連する後続作業を安全に実行できます


デストラクターはオブジェクト自体のメモリを解放するものではなく、ユーザーが追加のメモリを解放する必要がある場合に使用されます。解放する必要があるメモリがどこにあるかを PHP に指示し、最終的に PHP はそれを破棄するときに使用します
実際に解放する必要があるリソースがない限り、架空の関数を明示的に記述する必要はありません。次の Just.
unset(
変数名

);

または $変数名 = NULL を使用します。

以上がphpデストラクタの使い方を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。