PHPのデストラクターとは何ですか

(*-*)浩
リリース: 2023-02-23 18:42:01
オリジナル
2949 人が閲覧しました

PHPのデストラクターとは何ですか

デストラクター

__destruct ( void ) : void
ログイン後にコピー

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

デストラクターは、オブジェクトへのすべての参照が削除されたとき (明示的に破棄されたか暗黙的に破棄されたかに関係なく)、または php ファイルが実行されたときに実行されます。

オブジェクトへのすべての参照が削除されます: (推奨される学習: 初心者から熟練者までの PHP プログラミング )

、使用unset(对象名),将对象名销毁
2、$对象名 = null
3、$对象名 = 'abc'
ログイン後にコピー

明示的な破棄:

上に書いた 3 つの方法はすべて明示的破棄であり、いわゆる明示的破棄とは、プログラマが能動的にオブジェクト参照を削除することを意味します。

プログラマが明示的にオブジェクトを破棄しない場合、プログラムの実行後、オブジェクトはシステムによって破棄されます。これがシステム破壊です。暗黙的な破壊とも呼ばれます。

基本構文:

class 类名{
    public function __destruct(){
    //函数体
    //析构函数的重要作用,就是释放对象创建的资源
    //比如 数据库连接,文件句柄,绘图句柄。。。
    }
}
ログイン後にコピー

説明:

(1) デストラクターはすべて public

( 2) __destruct はキーワードです。変更しないでください

(3) デストラクタには仮パラメータがありません

(4) システムはデストラクタ中に

を呼び出します (5)デストラクタは、次の状況でシステムによって呼び出されます。

php ファイルが実行されます

オブジェクトへのすべての参照が削除されるか、オブジェクトが明示的に破棄されるときに実行されます。

<?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 など) 内にあるときとは異なる可能性があります。

注:

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

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

関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!