![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Elfer |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 31.8.2008 Репутация: -1 Всего: -1 |
Когда я передаю параметр в функцию, я хочу знать, как называлась переменная, которую я передавал.
Пример кода:
Реально ли в функции name() узнать что в параметр $arg1 передавалась переменная с именем myVarValue ? |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 26 Всего: 101 |
http://www.php.net/manual/ru/class.reflectionparameter.php
Добавлено через 2 минуты и 17 секунд это кажется только формальных параметров касается... Добавлено через 4 минуты и 16 секунд вообще для отладки используется debug_backtrace() |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
||||
|
||||
| Elfer |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 31.8.2008 Репутация: -1 Всего: -1 |
Спасибо, debug_backtrace() - тоже не то, там другие вещи возвращаются. Сколько не рыл в интернете - не могу найти решение.
Из ведомых мною php возможностей, я пока не знаю как это сделать. Гугл мне не помог. Надеюсь на знания опытных программистов. |
||||
|
|||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
ну, самое простое решение: передавать имя так же аргументом
|
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 14 Всего: 137 |
|
|||
|
||||
| Elfer |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 31.8.2008 Репутация: -1 Всего: -1 |
Спасибо, то что нужно. Только еще нужно дописать внутри функции global $$varName; И тут же разочаровался. Иногда нужно в функцию отправлять часть массива. К примеру $array['element']. Если я передам в функцию таким образом: name("array['element']"); то значение получу пустое. А мне также нужно будет и объекты передавать. Добавлено через 6 минут и 16 секунд
Так я так и делаю, но хочу избежать этого. Т.к. очень часто приходится при отладке вызывать эту функцию и передавать сначала переменную, потом ее название - это двойная работа. Хотел облегчить писанину. Это сообщение отредактировал(а) Elfer - 8.11.2012, 11:19 |
||||||
|
|||||||
| Fortop |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
А baldina, таки прав. В такой интепретации вопроса нужна именно debug_backtrace(). Другой вопрос что топикстартеру нужно что-то совсем другое, только он вопрос свой сформулировать не может. Добавлено через 1 минуту и 24 секунды
Можно просветить нас и раскрыть сакральный смысл всех этих манипуляций? -------------------- Мир это Я. Живее всех живых. |
||||
|
|||||
| Elfer |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 31.8.2008 Репутация: -1 Всего: -1 |
У меня есть функция - print_var($varValue, $varName = ''){...}
Она служит для отладки, чтобы по ходу программирования выводить в красивом оформлении название переменной и ее значение. Будь то массив, часть массива или объект, в функции через теги <pre> они красиво выведутся. Тут же я использую функцию debug_backtrace(). Она мне дает информацию о файле и номере строки, где была вызвана функция. Но к сожалению, мне приходится при вызове функции 2 раза писать одно и то же, т.е. переменную и название переменной. Бывают проблемы, когда передаю часть массива, к примеру $array['element1']['element2']['element3'] либо свойство объекта $object->var, и это же приходится писать вторым параметром, но без знака $. Для ускорения программирования я бы хотел найти решение. Зачем имя переменной? Очень часто бывает такое, что в коде вывожу 5-10 переменных, чтобы видеть какие значения в них и следить за тем, какие дальше значения формируются. Поэтому мне на странице важно видеть какая переменная имеет какое значение. Таким образом я осуществляю дебаггинг. Это сообщение отредактировал(а) Elfer - 8.11.2012, 11:40 |
|||
|
||||
| Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Я предлагаю открыть для себя xdebug, IDE и удаленную отладку.
Добавлено через 9 минут и 26 секунд P.S. Если будете настаивать на своем извращении, то я заставлю вас пользоваться debug_backtrace() и парсить исходники. Потому что оно решается именно так. -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 14 Всего: 137 |
Так я и знал
|
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |