Получить переменные в области видимости на каждом уровне возврата PHP? - PullRequest
7 голосов
/ 05 августа 2010

Есть ли способ просмотреть переменные, установленные в каждом кадре стека в обратном следе?Я могу довольно близко подобрать комбинацию debug_backtrace(true) для получения объектов, get_object_vars для каждого объекта, чтобы получить $ this vars, клавишу args в каждом фрейме обратной трассировки и get_defined_vars для получения глобальных переменных, но любые временныеПеременные, установленные внутри функции, я не могу найти способ получить.

Пример ситуации$bar - get_object_vars, а глобалы - get_defined_varsхочу, чтобы также получил значения $temp2 и $temp.

Ответы [ 2 ]

1 голос
/ 20 августа 2015

Установите и включите XDebug на своем (локальном) сервере.Затем используйте xdebug_get_declared_vars().Убедитесь, что в вашем файле xdebug .ini установлено xdebug.collect_vars. * Пример:

<?php
    class strings {
        static function fix_strings($a, $b) {
            foreach ($b as $item) {
            }
            var_dump(xdebug_get_declared_vars());
        }
    }
    strings::fix_strings(array(1,2,3), array(4,5,6));
?>

Возвращает:

array
  0 => string 'a' (length=1)
  1 => string 'b' (length=1)
  2 => string 'item' (length=4)

Примерfrom xdebug.org

Обратите внимание, что функция возвращает только переменные в области действия, в которой вызывается функция xdebug_get_declared_vars().

0 голосов
/ 01 февраля 2011

Измените отладку, чтобы принять 1 параметр.Затем просто введите get_defined_vars .Это даст вам массив всех переменных в локальной области видимости.

...