2016-11-30 3 views
0

Идея здесь заключается в создании метода ведения журналов и отладки, который не требует передачи упомянутого метода связанным «магическим константам».Есть ли способ перенести магическую константу PHP как функцию по умолчанию?

Эффективно, я пытаюсь добиться этого, используя определение метода следующим образом:

function Debug($Message,$File=__FILE__,$Line=__LINE__) 
{ 
... 
} 

Проблема Я бегу в к тому, что если я определяю вышеупомянутый метод в файле, кроме одного I am 'debugging', я получаю файл и строку из файла, в котором метод определен, а не тот, который я «отлаживаю».

Рассмотрим следующий набор файлов:

Debugging.php

<? 
function Debug($Message,$File=__FILE__,$Line=__LINE__) 
{ 
    echo("$File ($Line) :: $Message"); 
} 
?> 

Testing.php

<? 
Debug("Some message"); 
?> 

Выход:

Debugging.php (1) :: Some message 

Когда вызов Сообщ e произошло во втором файле, что, как должно быть ясно, к этому моменту, не является предполагаемой реализацией. Я мог бы, конечно, передать метод «Отладки» те магические константы во время вызова, но я стараюсь, если это возможно, устранить ненужный код.

+0

Для этого используется 'debug_stack_trace'. Почему вы не можете использовать это? – Machavity

+0

Я полагаю, что это разумное решение, если я хочу потреблять тонну циклов, анализируя его каждый раз, когда я отправляю сообщение ... – DigitalJedi805

ответ

0

Вы бы использовали функцию debug_backtrace.

function Debug($Message) 
{ 
    $backtrace = debug_backtrace(); 
    echo($backtrace[0]['file'] .'(' . $backtrace[0]['line'] . ') :: ' . $Message); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^