Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.02.2010, 19:35
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

имя файла и строка вызова в PHP
Может кто знает возможно ли определить имя файла и строку в которой произведен вызов функции без явного их указания ?
Зачем: усовершенствую класс работы с базами данных и это надо для отладки. писать в каком файле и и строке был произведен запрос в случае ошибки.

Сейчас делаю так:
$db->q($query,__FILE__,__LINE__);

Как можно автоматизировать?
Гугл не помогает, отсылает не туда =(
__________________
Настоящий программист думает и осознает сам решение задачи, а не копирует другие мысли, не осознавая их (c)
Относись к человеку так же, как хотелось бы отношения к себе (с)
Все нужно там, где оно нужно, а все не нужно нигде (с) Gozar
B~Vladi: А кто такой JavaScript стрелок?! micscr: это тот, кто не jQuery танкист.
Программы становятся медленнее быстрее, чем компьютеры становятся быстрее (с) Никлаус Вирт
Ответить с цитированием
  #2 (permalink)  
Старый 21.02.2010, 09:00
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,381

debug_backtrace предоставляет широкие возможности отладки.
Вот как я делаю в своем самописном дебагере.:
static function dbg(&$what, $name='Unknown', $pometka = '')
   {
       static $num = 0;
       ++$num;
       $inf = debug_backtrace();
       try {
       $str = self::$str_shab; // произвести замены в шаблоне вывода логов
       $str = str_replace('(num)',strval($num),$str);
       $str = str_replace('(file)',strval($inf[0]['file']),$str);
       $str = str_replace('(line)',strval($inf[0]['line']),$str);
           $vsp = (!empty($inf[1]['function'])) ? $inf[1]['function'] : '';
       $str = str_replace('(func)',strval($vsp),$str);
           $vsp = (!empty($inf[1]['type'])) ? $inf[1]['type'] : '';
       $str = str_replace('(type)',strval($vsp),$str);
       $str = str_replace('(name)',strval($name),$str);
       $str = str_replace('(nametype)',strval(gettype($what)),$str);
       $str = str_replace('(val)',self::vivData($what),$str);
       $str = str_replace('(pometka)',strval($pometka),$str);
       self::$mas_str[] = $str;
       } catch (Exception $ex) {
           self::$mas_errors[] = $ex->getMessage() . '| file:' . $ex->getFile() . '| line:' . $ex->getLine();
       }
       
   }

Заметь $inf[0], $inf[1], ... - обращение к разным уровням вложенности функций.
Ответить с цитированием
  #3 (permalink)  
Старый 21.02.2010, 12:30
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

Сообщение от micscr
$inf = debug_backtrace();
Спс. это как раз то что мне и нужно . и как я раньше не нашел этой функции. Слепондя я...
__________________
Настоящий программист думает и осознает сам решение задачи, а не копирует другие мысли, не осознавая их (c)
Относись к человеку так же, как хотелось бы отношения к себе (с)
Все нужно там, где оно нужно, а все не нужно нигде (с) Gozar
B~Vladi: А кто такой JavaScript стрелок?! micscr: это тот, кто не jQuery танкист.
Программы становятся медленнее быстрее, чем компьютеры становятся быстрее (с) Никлаус Вирт
Ответить с цитированием
  #4 (permalink)  
Старый 21.02.2010, 14:18
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,381

PeaceCoder, а каким ты пошаговым отладчиком пользуешься в php?
Ответить с цитированием
  #5 (permalink)  
Старый 21.02.2010, 16:10
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

Сообщение от micscr
PeaceCoder, а каким ты пошаговым отладчиком пользуешься в php?
Неприходится. Опыта хватает уже на то что бы не допускать банальных ошибок, только опечатки. Раньше пользовался от Nusphere. А вообще ща вот сижу пишу класс, с его помощью можно будет узнать все ошибки в ходе исполнения со всеми подробностями исполнения.
__________________
Настоящий программист думает и осознает сам решение задачи, а не копирует другие мысли, не осознавая их (c)
Относись к человеку так же, как хотелось бы отношения к себе (с)
Все нужно там, где оно нужно, а все не нужно нигде (с) Gozar
B~Vladi: А кто такой JavaScript стрелок?! micscr: это тот, кто не jQuery танкист.
Программы становятся медленнее быстрее, чем компьютеры становятся быстрее (с) Никлаус Вирт

Последний раз редактировалось PeaceCoder, 21.02.2010 в 16:21.
Ответить с цитированием
  #6 (permalink)  
Старый 21.02.2010, 17:52
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,233

хм
товарищи модераторы, а может быть поделитесь из каких соображений было удалено мое краткое, но весьма по сути сообщение?
вот уж ничего не ожидал
Цитата:
debug_backtrace
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Угодить php с выводом ошибки nemo Серверные языки и технологии 31 01.02.2010 16:15
Строка со спецсимволами (взаимодействие с PHP) Ilg Общие вопросы Javascript 3 05.06.2009 13:45
Определить имя файла, в котором скрипт nlf Общие вопросы Javascript 5 26.04.2009 23:13
Имя файла регуляркой greatilya Общие вопросы Javascript 2 05.03.2009 12:04
оприделить имя файла www Общие вопросы Javascript 2 10.08.2008 14:34