オブジェクトをインスタンス化した場合、phpがシャットダウンする前にオブジェクトがメソッドをトリガーする可能性はありますか?例
class foo{
public function sayBye(){
echo 'bye';
}
}
$obj = new foo();
$obj2 = new foo();
die();
sayBye関数を自動的にトリガーする方法はありますか?(言い換えれば、そのコードは「byebye」を出力します)
register_shutdown_function関数を確認してください。
sayBye()
デストラクタに呼び出しを入れるのはどうですか?
オブジェクトをインスタンス化した場合、php がシャットダウンする前にメソッドをトリガーする方法はありますか? 例
がある。詳細については、 __destruct()を参照してください。ただし、これは信頼できないdie()
ことに注意してください。スクリプトに、キャッチされない例外、致命的なエラーが含まれている場合、 は呼び出され__destruct()
ません。
あなたはそれを使うことができますが、賢く使ってください;)
編集:__destruct( )
を呼び出すと、 が呼び出されるようexit;
です。それにもかかわらず、警告は他の状況にも当てはまります。
私が見ることができる最も簡単な方法は、クラスにデストラクタを追加することです。
class foo{
public function sayBye(){
echo 'bye';
}
public function __destruct(){
$this->sayBye();
}
}
これは何をしますか?スクリプトの実行が完了するか、unset($object) が呼び出されると、__destruct() 内のコードを実行します。これは、スクリプトが完了する前に急いでスクリプトを停止するため、おそらく die() では機能しません。