6

関数が呼び出された行番号とファイルを関数に自動的に含めることは可能ですか?

または関数内で呼び出す__LINE____FILE__のように、関数定義が含まれている行とファイルを使用します。

しかし、毎回関数に渡す必要はありません__LINE____FILE__

したがって、それらをデフォルトのパラメーターとして設定した場合、それらは関数定義から来ているのでしょうか、それともどこから呼び出されているのでしょうか?

4

4 に答える 4

6

あなたが提案することをすることはうまくいかないようです。

あなたはこのようにすることができますが、なぜあなたがそれをしたいのか、そしてあなたが達成しようとしていることへのより良いアプローチがないことはわかりません - Wrikken's answerを参照してください。

<?php

function test() {
    $backtrace = debug_backtrace();
    $last = $backtrace[0];
    echo "{$last['function']}() called from {$last['file']} line {$last['line']}\r\n"; 
}



test();
于 2010-08-02T11:42:43.423 に答える
5

唯一の方法は を使用することdebug_backtrace()ですが、名前が示すように、デバッグ用です。コードは、呼び出された場所/タイミングに基づいて、本番環境で意味や機能を付加するべきではありません。

于 2010-08-02T11:42:50.527 に答える
-1

この情報を何らかのエラー メッセージで使用する場合は、trigger_error()PHP ネイティブ エラーを発生させる関数があるため、通常の PHP の方法で表示されます (ファイル名、行番号、提供されたテキスト)。

この関数の最も優れた機能は、現在のエラー処理設定に従って動作することです。

ini_set('display_errors',1);
trigger_error("Horrible bug found!");

次のようなエラーメッセージを画面に直接出力します。

Notice: Horrible bug found! in /path/file.php on line 2


このコードを開発するのに非常に便利です

ini_set('display_errors',0);
ini_set('log_errors',1);
trigger_error("Horrible bug found!");

将来の参照用にエラー ログに記録されます

于 2010-08-02T12:29:13.193 に答える