ホームページ >バックエンド開発 >PHPの問題 >PHPでエラープロンプトをカスタマイズする方法

PHPでエラープロンプトをカスタマイズする方法

藏色散人
藏色散人オリジナル
2021-06-02 15:38:281562ブラウズ

PHP では、「set_error_handler()」関数を使用してエラー処理をカスタマイズできます。この関数の機能は、「set_error_handler(callable $error_handler. ..)」。

PHPでエラープロンプトをカスタマイズする方法

この記事の動作環境: Windows 7 システム、PHP バージョン 7.1、DELL G3 コンピューター

エラー プロンプトのカスタマイズ方法in php?

PHP set_error_handler(): カスタム エラー処理関数

PHP には set_error_handler() 関数が用意されており、これを使用して別の関数を指定できます。エラー処理関数の構文は次のとおりです:

set_error_handler(callable $error_handler [, int $error_types = E_ALL | E_STRICT ])

パラメータの説明

1) $error_handler はユーザー定義の関数名です。関数名に加えて、NULL を渡すこともできます。ハンドラーをリセット デフォルト状態では、参照オブジェクトとオブジェクト メソッド名の配列を渡すこともできます。

ユーザー定義関数の形式は次のとおりです:

error_handler(int $errno , string $errstr [, string $errfile [, int $errline [, array $errcontext ]]])

その中で:

最初のパラメータ $errno はエラー レベルを表し、整数型です。

# #2 番目のパラメータ $errstr は文字列型のエラー情報を表します;

3 番目のパラメータ $errfile はオプションのパラメータで、エラーが発生したファイル名を表します。文字列型;

4 番目のパラメータ $errline もオプションのパラメータで、エラーが発生した行番号を示し、整数型です。

5 番目のパラメータ $errcontext もオプションですパラメータ (PHP7.2.0 以降では非推奨) は、エラーが発生したときにアクティブなシンボル テーブルの配列を表します。つまり、$errcontext には、エラーがトリガーされたスコープ内のすべての変数の配列が含まれます。ユーザーのエラー ハンドラーはエラー コンテキストを変更しないでください。

注: set_error_handler() 関数が FALSE を返した場合、標準エラー ハンドラーは引き続き呼び出されます。

2) $error_types パラメータは、エラーの表示を制御できる設定ファイル php.ini の error_reporting と同様であり、このパラメータを使用して $error_handler のトリガーをブロックできます。このマスクがないと、$error_reporting の設定に関係なく、エラーごとに $error_handler が呼び出されます。

エラー ハンドラーが以前に定義されている場合はプログラム名が返され、組み込みエラー ハンドラーの場合は NULL が返されます。無効なコールバック関数が指定された場合も NULL が返されます。以前のエラー ハンドラーがクラス メソッドだった場合、この関数はクラス名とメソッド名を含むインデックス付き配列を返します。

[例] エラー処理関数をカスタマイズし、プログラム内のエラー処理に使用します。

<?php
    function error_handler($errno, $errstr, $errfile, $errline ) {
        echo "error number:".$errno."<br/>";
        echo "error msg:".$errstr."<br/>";
        echo "error file:".$errfile."<br/>";
        echo "error line:".$errline."<br/>";
        die(&#39;something error&#39;);
    }
    set_error_handler("error_handler");
    strpos();
?>

実行結果は次のとおりです:

error number:2
error msg:strpos() expects at least 2 parameters, 0 given
error file:D:\WWW\index.php
error line:10
something error

注: このメソッドはエラー処理に使用します。エラー処理関数でプログラムの実行が終了しない場合、プログラムは引き続き実行されます。エラーが発生した次の行を実行するため、プログラムを終了するには die() 関数を使用する必要があります。

このエラー処理方法では、すべてのレベルのプログラム エラーを引き継ぐことはできないことにも注意してください。E_ERROR、E_PARSE、E_CORE_ERROR、E_CORE_WARNING、E_COMPILE_ERROR、E_COMPILE_WARNING、および E_STRICT 部分のエラーは、元の形式で表示されます。出てくる。

set_error_handler() Advanced

PHP の例外処理メカニズムは完全ではないため、例外を自動的にスローすることはできません。ユーザーは set_error_handler() を使用して例外をエラーとして処理することもできるため、カスタム エラー処理関数を使用できます自動的に例外をキャッチします。

[例] カスタム エラー処理関数を使用して、例外を自動的にキャッチします。

<?php
    function error_handler($errno, $errstr, $errfile, $errline ) {
        echo "error number:".$errno."<br/>";
        echo "error msg:".$errstr."<br/>";
        echo "error file:".$errfile."<br/>";
        echo "error line:".$errline."<br/>";
        die(&#39;something error&#39;);
    }
    set_error_handler("error_handler");
    /* 触发异常 */
    try {
        $a = 5/0;
        echo $a;
    } catch(Exception $e) {
        echo $e->getMessage();
    }
?>

実行結果は次のとおりです:

error number:2
error msg:Division by zero
error file:D:\WWW\index.php
error line:12
something error

プログラムが 12 行目の $a = 5/0; ステートメントまで実行されると、プログラムは自動的にこの例外をキャプチャし、ユーザー-定義された処理用の関数。

推奨学習: 「

PHP ビデオ チュートリアル

以上がPHPでエラープロンプトをカスタマイズする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。