| imho.ws |
![]() |
|
|
|
# 1 |
|
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Call time parameters
Суть в чем, лучше сразу пример:
Есть: PHP код:
PHP код:
Такое вообще возможно? Долго читал доки, так и не нашел. Есть debug_backtrace() он говорит откуда вызвано (файл, строка и все то же значение параметра). Появилась безумная идея открыть этот файл и распарсить напрямую ту строку либо регулярным выражением, либо с помощью прямого перебора токенов. Но есть несколько НО тут:
В итоге так и не знаю что делать. Смотрел в сторону Runkit, Parsekit, Tokenizer, Aggregation... Может кто-то уже все-таки делал подобное и поделиться опытом??
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. Последний раз редактировалось Hubbitus; 26.02.2008 в 04:46. Причина: Очепятки исправил |
|
|
|
|
# 2 |
|
::VIP::
Регистрация: 12.11.2002
Адрес: Nicosia, Cyprus
Сообщения: 1 285
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Делать - не делал, но посмотрел бы в сторону Reflection. Правда, он предназначен для реверс-инжиниринга кода, и поможет ли в анализе рантайма с нужными тебе подробностями - утверждать не могу.
__________________
"If people only knew how hard I work to gain my mastery, it wouldn't seem so wonderful at all." Michelangelo Buonarroti |
|
|
|
|
# 3 |
|
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Ну собственно парсер я-таки накидал работает, единственное не вижу никакого способа решить 2 пункт выше...
Saruman, прежде всего, спасибо большое за ответ. Я забыл его упомянуть, Reflection я тоже смотрел краем глаза. Собственно в поисках пробовал даже, чуть ниже приведенный, пример "Example#3 Using the ReflectionParameter class" - оно неплохо работает, но именно для формальных параметров, то есть для определения функций и методов, но не рантайм к сожалению. Ну или я не вьехал как сделать нужное мне....
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. |
|
|
|
|
# 5 |
|
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Может конечно. И собственно так и было уже несколько лет
![]() ![]() ![]() Но очень хочется какраз писать просто скажем dump($someVar) и на выходе получить (упрощая разумеется) что-то типа: Var $varName has value: var_dump($varValue); Это первая, и наверное самая главная причина. Вторая, во многих методах, для проверки переданного значения я использую макрос REQUIRED_VAR, приблизительно таким способом: $myVar = REQUIRED_VAR($_REQUEST['varFromUser']); где REQUIRED_VAR не делает ничего, кроме как "проверяет" переменную переданную по ссылке (if(!$var)) и возбуждает исключение VariableRequiredException если она пустая. Так вот, писать во всех местах $myVar = REQUIRED_VAR($_REQUEST['varFromUser'], '$_REQUEST[\'varFromUser\']'); мало того что избыточно, так и просто утомительно, поскольку используется весьма часто и в разных местах. А иначе, я конечно ловлю исключение, но если в try-блоке было 5-7 таких вызовов, то даже нету возможности узнать какое именно значение пустое ![]() Ну и конечно же строка в логе типа просто "2008-02-26 04:52:31: var: Variable requered!" выглядит намного менее полезной чем скажем: "2008-02-26 04:52:31: var: Variable $_REQUEST['mail'] requered!", согласитесь. P.S. Эээх, хоть это и интерпретатор, а все-таки не хватает хоть элементарного препроцессора иногда (я бы тогда в первую очередь еще "$this->" заменил бы на что-нибудь типа "$->" хотя бы)...
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. Последний раз редактировалось Hubbitus; 26.02.2008 в 13:50. |
|
|
|
|
# 6 |
|
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Кстати не так, там одиночные кавычки должны быть, иначе там подставится все также значение переменной.
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. |
|
|