1

オブジェクトをインスタンス化した場合、phpがシャットダウンする前にオブジェクトがメソッドをトリガーする可能性はありますか?例

class foo{
   public function sayBye(){
       echo 'bye';
   }
}
$obj = new foo();
$obj2 = new foo();
die();

sayBye関数を自動的にトリガーする方法はありますか?(言い換えれば、そのコードは「byebye」を出力します)

4

4 に答える 4

4

register_shutdown_function関数を確認してください。

于 2012-04-19T11:05:02.120 に答える
2

sayBye()デストラクタに呼び出しを入れるのはどうですか?

http://php.net/manual/en/language.oop5.decon.php

于 2012-04-19T11:04:32.997 に答える
1

オブジェクトをインスタンス化した場合、php がシャットダウンする前にメソッドをトリガーする方法はありますか? 例

がある。詳細については、 __destruct()を参照してください。ただし、これは信頼できないdie()ことに注意してください。スクリプトに、キャッチされない例外、致命的なエラーが含まれている場合、 は呼び出され__destruct()ませ

あなたはそれを使うことができますが、賢く使ってください;)

編集:__destruct( )を呼び出すと、 が呼び出されるようexit;です。それにもかかわらず、警告は他の状況にも当てはまります。

于 2012-04-19T11:05:55.277 に答える
0

私が見ることができる最も簡単な方法は、クラスにデストラクタを追加することです。

class foo{
   public function sayBye(){
       echo 'bye';
   }

   public function __destruct(){
       $this->sayBye();
   }
}

これは何をしますか?スクリプトの実行が完了するか、unset($object) が呼び出されると、__destruct() 内のコードを実行します。これは、スクリプトが完了する前に急いでスクリプトを停止するため、おそらく die() では機能しません。

于 2012-04-19T11:07:58.343 に答える