Поиск по этому блогу

вторник, 25 марта 2014 г.

PHP. Откуда вызывается функция?

Время от времени становится перед программистами задача выяснить откуда вызывается функция. PHP предоставляет несколько инструментов. Самый велосипедный который можно придумать (и самый негуманный) это передавать имя файла и номер строки параметрами.

Пример:
Есть функция
  function test_function() { echo 'Hello!'; }
 
Изменяем её до состояния
  function test_function($file='', $line='') {
      echo 'Hello!';
      var_dimp('File: '.$file.' Line: '.$line);
}
Теперь при вызове функции нужно передать парочку псевдоконстант:
   test_function(__FILE__, __LINE__);
 
 Выглядит глупо, да?) Так и есть. Делать так не стоит. Есть вариант более гуманный. Вот он.
Пример:
Изменяем исходную функцию до такого состояния:
  function test_function() {
      $debug = debug_backtrace(false); // В ознакомительных целях потом можео попробовать с true
      var_dump('File: '.$debug[0]['file'].'.Line: '.$debug[0]['line']);
  }
 
Теперь нам не нужно изменять код вызова, а информацию о месте вызова функции мы имеет.
Для обзора всех возможностей  можете просто распечатать $debug

Комментариев нет:

Отправить комментарий

Количество·просмотров