Возможно ли, чтобы функция автоматически содержала номер строки и файл, который была вызвана функцией,
как если бы я вызывал __LINE__
или __FILE__
в функции, он будет использовать строку и файл, в котором находится определение функции.
но я не хочу пропускать __LINE__
и __FILE__
в функцию каждый раз.
поэтому, если я задал их как параметры по умолчанию, они исходят из определения функции или откуда она вызывается?
Единственный способ – использовать debug_backtrace()
, но, как сказано в названии, он предназначен для отладки. Ваш код не должен придавать никакого значения или функциональности в производстве, основываясь на том, где / когда он вызывается.
Выполнение того, что вы предлагаете, похоже, не работает.
Вы можете сделать это так, но я не уверен, почему вы хотите это сделать, и что нет лучшего подхода к тому, чего вы пытаетесь достичь – см . Ответ Wrikken .
<?php function test() { $backtrace = debug_backtrace(); $last = $backtrace[0]; echo "{$last['function']}() called from {$last['file']} line {$last['line']}\r\n"; } test();
Это так поздно, но, возможно, может быть полезно, вы можете использовать get_called_class () для имени класса, который вызывается, и не проходят, как параметр, установленный для CLASS .
если вы хотите использовать эту информацию в каком-то сообщении об ошибке, существует функция 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!");
будет помещен в журнал ошибок для будущей ссылки
обязательный для производства