現在、どのエラー ハンドラがエラーを処理しているかを調べたいと思います。
以前のエラー ハンドラが返されることはわかってset_error_handler()
いますが、新しいエラー ハンドラを設定せずに現在のエラー ハンドラが何であるかを調べる方法はありますか?
現在、どのエラー ハンドラがエラーを処理しているかを調べたいと思います。
以前のエラー ハンドラが返されることはわかってset_error_handler()
いますが、新しいエラー ハンドラを設定せずに現在のエラー ハンドラが何であるかを調べる方法はありますか?
PHP にはget_error_handler()
関数がありませんが、ちょっとしたトリックをset_error_handler()
使用して現在のエラー ハンドラを取得できますが、その値によっては、その情報で多くのことができない場合があります。それにもかかわらず:
set_error_handler($handler = set_error_handler('var_dump'));
// Set the handler back to itself immediately after capturing it.
var_dump($handler); // NULL | string | array(2) | Closure
見て、姐さん、冪等です!
はい、新しいエラー ハンドラを設定せずにエラー ハンドラを見つける方法があります。これは、ワンステップのネイティブ php 関数ではありません。しかし、その効果はまさにあなたが必要としているものです。
@aurbano、@AL the X、@Jesse、および @Dominic108 置換方法のすべての提案を要約すると、次のようになります。
function get_error_handler(){
$handler = set_error_handler(function(){});
restore_error_handler();
return $handler;
}
を使用できますset_error_handler()
。set_error_handler()
現在のエラー ハンドラを返します (ただし、「混合」として)。取得した後、 を使用すると、元restore_error_handler()
のままになります。
これは PHP では不可能です - あなたが言ったように、set_error_handler を呼び出すときに現在のエラー ハンドラを取得し、restore_error_handler で復元できます。
ソースを確認しましたが、答えはノーです。