[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: аналог get_defined_vars
gantzy
Добрый день!

есть функция get_defined_vars, нужен ее аналог, тоесть нужна функция которая получает список переменных текущего скрипта и выводит их в отформатированном виде.

Хотелось бы узнать как работает get_defined_vars()

конструкции:


function func($array)
{
foreach($array as $key => $val)
/* вывод */
}

func(get_defined_vars());



и


$array = get_defined_vars();
foreach($array as $key => $val)
/* вывод */



не подходят

хотелось бы что то такое:



function func()
{
/* получаем переменные которые находятся вне функции в массив $array */
foreach($array as $key => $val)
/* вывод */
}

func();





Спустя 36 минут, 20 секунд (16.09.2010 - 18:05) twin написал(а):
Домашнее задание?

Спустя 3 минуты, 57 секунд (16.09.2010 - 18:09) gantzy написал(а):
угу... только сам для себя поставил.

Спустя 7 минут, 28 секунд (16.09.2010 - 18:16) twin написал(а):
Ну возьми тогда массив $GLOBALS и посмотри что внутри. И как это достать.

Спустя 17 минут, 15 секунд (16.09.2010 - 18:33) gantzy написал(а):
GLOBALS будет соодержать все переменные, мне нужно взять только те, которые были объявлены в файле в котором вызвана функция func(), вот как их отфильтровать я не знаю.

Спустя 9 часов, 49 минут, 51 секунда (17.09.2010 - 04:23) gantzy написал(а):
совсем никак не решаемо?

Без списка имен переменных не обойтись?

Спустя 6 часов, 53 минуты, 48 секунд (17.09.2010 - 11:17) SlavaFr написал(а):
я предпологаю, что у тебя какая то проблема, которую ты не можеш решить из за незнания стандартного подхода.
ачем это нужно узнавать переменные на уровне файла а не на уровне скрипта?
может все решается гoраздо проще?

Спустя 1 час, 45 секунд (17.09.2010 - 12:18) gantzy написал(а):
стандартный подход это get_defined_vars()
Зачем мне это нужно. Для отслеживания изменения значений переменных.

Чего я хочу добиться и как у меня это работает сейчас:

захожу на ftp открываю файл .php, вставляю в то место где я хочу остановить скрипт:


func(get_devined_vars());


func выводит переменные в отформатированном виде. Чего же я хочу, это уменьшить высов этой функции и использовать просто:


func();



Примерно, так. Зачем я этого хочу, это уже другой вопрос smile.gif
func() это просто пример реализации, на самом деле у меня есть класс который выводит переменные скрипта для отладки. там много вариантов и с заранее готовым списком имен переменных, с последующем выдиранием из GLOBALS и т.п.

и выглядит это примерно так:


$deb = new CDEBUG(array("TEST1","TEST2","TEST3"));
/*код*/
$deb->stop(1);
/*код*/
$deb->stop(2);
/*код*/
$beb->stop(3);


но в этом случае я формирую массив имен переменных, которые надо вывести и выдираю их из GLOBALS. А сейчас хочу сделать возможным не формировать массив а собрать его автоматом как это делает get_defined_vars().

Спустя 1 час, 23 минуты, 45 секунд (17.09.2010 - 13:41) twin написал(а):
Смутно как то... может этот принцип чем поможет?

Спустя 22 минуты, 53 секунды (17.09.2010 - 14:04) Joker-Job написал(а):
посмотри массив $GLOBAL в начеле файле и после в нужной строке и после сравни все что появилось, значит обьявленны в этом файле. а вообще затея непонятная и скорее всего связана с тем что челевек незнает о области видимости.

Спустя 31 минута, 56 секунд (17.09.2010 - 14:36) gantzy написал(а):
Цитата (Joker-Job @ 17.09.2010 - 11:04)
посмотри массив $GLOBAL в начеле файле и после в нужной строке и после сравни все что появилось, значит обьявленны в этом файле. а вообще затея непонятная и скорее всего связана с тем что челевек незнает о области видимости.

о да... вообще удобно будет smile.gif вместо одного вызова я еще буду запоминать массив в начале файла, а потом еще и сравнивать их. Что за глупости... лучше уж в функцию передавать результат get_defined_vars.


Спустя 18 минут, 10 секунд (17.09.2010 - 14:54) gantzy написал(а):
Цитата (twin @ 17.09.2010 - 10:41)
Смутно как то... может этот принцип чем поможет?

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

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.