22

現在、どのエラー ハンドラがエラーを処理しているかを調べたいと思います。

以前のエラー ハンドラが返されることはわかってset_error_handler()いますが、新しいエラー ハンドラを設定せずに現在のエラー ハンドラが何であるかを調べる方法はありますか?

4

7 に答える 7

25

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

見て、姐さん、冪等です!

于 2014-08-06T20:32:43.257 に答える
13

はい、新しいエラー ハンドラを設定せずにエラー ハンドラを見つける方法があります。これは、ワンステップのネイティブ php 関数ではありません。しかし、その効果はまさにあなたが必要としているものです。

@aurbano、@AL the X、@Jesse、および @Dominic108 置換方法のすべての提案を要約すると、次のようになります。

function get_error_handler(){
    $handler = set_error_handler(function(){});
    restore_error_handler();
    return $handler;
}
于 2017-04-11T09:40:52.310 に答える
6

を使用できますset_error_handler()set_error_handler()現在のエラー ハンドラを返します (ただし、「混合」として)。取得した後、 を使用すると、元restore_error_handler()のままになります。

于 2012-09-11T22:11:11.733 に答える
6

これは PHP では不可能です - あなたが言ったように、set_error_handler を呼び出すときに現在のエラー ハンドラを取得し、restore_error_handler で復元できます。

于 2012-09-11T22:11:56.087 に答える
-4

ソースを確認しましたが、答えはノーです。

于 2012-09-11T22:20:31.463 に答える