Показать полную графическую версию : PHP. Финты ушами с переменными и функциями.
Prisoner
25-06-2005, 02:29
Доброго времени суток, господа. У меня возникла сложность в виде шизофреничных сомнения в вопросе о невозможности ("Невозможно? Неизбежно!" A. Smith). А именно: Может ли функция знать в каком файле и какой строке она была вызвана? Необходима сия вещь для написания функции дебажного вывода значения некой переменной. На данный момент передаю функции ручками: имя переменной (строка), константы __FILE__, __LINE__. Мысли?
Vlad Drakula
25-06-2005, 10:36
Prisoner
1) есть глобальная перменная - имя файла.
2) имя файла можно выдирать их строки запроса.
Prisoner
Предлагаю глянуть в сторону различных дебажных модулей
+ поля типа referer (но это может дать только имя вызывающего файла)
Prisoner
26-06-2005, 07:22
Зрю некорректное изложение и/или понимание вопроса... чуть больше информации: представьте, что где-то (index.php) происходит инклюд всего необходимого (постоянно), в том числе и модуля с функциями по дебагу. Таким образом, выполняется любая из множества страниц сайта представляющая собой всегда только index.php (что выводить и как передается ему через параметры). Так глобальные переменные будут хранить по сути константу с содержимым - index.php. Вот представьте себе: скриптом index.php выполняется код расположенный в some_file.inc который проинклюдил included.inc. В последнем хотим поглядеть значение переменной (пусть это будет сложный объект) - вызываем нашу функцию дебага var_dumpf(). Вот функция и должна вывести в шапке вывода что-то вроде some_var in included.inc(123), где в скобках номер строки вызова var_dumpf(). Компрендо? %)
Мне лично думается тут нужны не обычные методы, а рутины низкого уровня по работе с переменными.
P.S. archy, а к примеру, плиз? Есть конкретика или начинать шерстить? :)
Prisoner
28-06-2005, 09:17
Решение тут (http://ru.php.net/debug_backtrace).
Prisoner
хм, я действительно не разобралась в "ТЗ". А за ссылку спасибо! Это интересно
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.