Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Название передаваемой переменной в функции 
:(
    Опции темы
Elfer
Дата 7.11.2012, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 31.8.2008

Репутация: -1
Всего: -1



Когда я передаю параметр в функцию, я хочу знать, как называлась переменная, которую я передавал.
Пример кода:
Код

function name($arg1) {
    echo 'Переменная: '.$varName.'.';    // Хочу, чтобы вывелся текст: Переменная: myVarValue.
}

$myVarValue = '123';
name($myVarValue);

Реально ли в функции name() узнать что в параметр $arg1 передавалась переменная с именем myVarValue ?
PM MAIL WWW ICQ   Вверх
baldina
Дата 7.11.2012, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 26
Всего: 101



http://www.php.net/manual/ru/class.reflectionparameter.php

Добавлено через 2 минуты и 17 секунд
это кажется только формальных параметров касается...

Добавлено через 4 минуты и 16 секунд
вообще для отладки используется debug_backtrace()
PM MAIL   Вверх
skyboy
Дата 8.11.2012, 00:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(baldina @  7.11.2012,  22:44 Найти цитируемый пост)
http://www.php.net/manual/ru/class.reflectionparameter.php

для указанного кода она вернула бы $arg1, что явно не то, что ждет топикстартер.
Elfer, нет. добейся нужного тебе другим путем.
PM MAIL   Вверх
Elfer
Дата 8.11.2012, 00:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 31.8.2008

Репутация: -1
Всего: -1



Цитата(skyboy @ 8.11.2012,  00:24)
для указанного кода она вернула бы $arg1, что явно не то, что ждет топикстартер.
Elfer, нет. добейся нужного тебе другим путем.

Спасибо, debug_backtrace() - тоже не то, там другие вещи возвращаются. Сколько не рыл в интернете - не могу найти решение.
Цитата

Добейся другим путем

Из ведомых мною php возможностей, я пока не знаю как это сделать. Гугл мне не помог. Надеюсь на знания опытных программистов.
PM MAIL WWW ICQ   Вверх
skyboy
Дата 8.11.2012, 08:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



ну, самое простое решение: передавать имя так же аргументом
PM MAIL   Вверх
Aliance
Дата 8.11.2012, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



Код

function name($varName) {
    echo $varName . ' = ' . $$varName;
}
$myVarValue = '123';
name('myVarValue');

PM MAIL WWW ICQ Skype   Вверх
Elfer
Дата 8.11.2012, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 31.8.2008

Репутация: -1
Всего: -1



Цитата(Aliance @ 8.11.2012,  10:35)
Код

function name($varName) {
    echo $varName . ' = ' . $$varName;
}
$myVarValue = '123';
name('myVarValue');

Спасибо, то что нужно. Только еще нужно дописать внутри функции global $$varName;
И тут же разочаровался. Иногда нужно в функцию отправлять часть массива. К примеру $array['element']. Если я передам в функцию таким образом: name("array['element']"); то значение получу пустое. А мне также нужно будет и объекты передавать.

Добавлено через 6 минут и 16 секунд
Цитата(skyboy @ 8.11.2012,  08:39)
ну, самое простое решение: передавать имя так же аргументом

Так я так и делаю, но хочу избежать этого. Т.к. очень часто приходится при отладке вызывать эту функцию и передавать сначала переменную, потом ее название - это двойная работа. Хотел облегчить писанину.

Это сообщение отредактировал(а) Elfer - 8.11.2012, 11:19
PM MAIL WWW ICQ   Вверх
Fortop
Дата 8.11.2012, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Цитата(skyboy @  8.11.2012,  00:24 Найти цитируемый пост)
для указанного кода она вернула бы $arg1, что явно не то, что ждет топикстартер.

А  baldina, таки прав. В такой интепретации вопроса нужна именно debug_backtrace().

Другой вопрос что топикстартеру нужно  что-то совсем другое, только он вопрос свой сформулировать не может.

Добавлено через 1 минуту и 24 секунды
Цитата(Elfer @  8.11.2012,  11:15 Найти цитируемый пост)
передавать сначала переменную, потом ее название - это двойная работа

Можно просветить нас и раскрыть сакральный смысл всех этих манипуляций?


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Elfer
Дата 8.11.2012, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 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
PM MAIL WWW ICQ   Вверх
Fortop
Дата 8.11.2012, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Я предлагаю открыть для себя xdebug, IDE и удаленную отладку.

Добавлено через 9 минут и 26 секунд
P.S. Если будете настаивать на своем извращении, то я заставлю вас пользоваться debug_backtrace() и парсить исходники. Потому что оно решается именно так.


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Aliance
Дата 8.11.2012, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



Так я и знал user posted image
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0540 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.