@gimade

Почему XDebug не видит, что в переменной, на точке останова?

Почему XDebug не видит, что в переменной на точке останова? Посмотреть содержимое массива можно только в случае, если продолжить исполнение программы на шаг вперед.
Брякпоинт:
5afe923c86a64681444370.png
Перепрыгнул на след. строку
5afe9269bb56b118235428.png
  • Вопрос задан
  • 260 просмотров
Решения вопроса 1
@Merzley
Дело в том, что точка остановки это точка которая БУДЕТ выполнена, а не УЖЕ выполненная. Т.е. когда XDebug останавливается на строчке
$arr = [0,1,2,3,4,5];
это означает, что эта строчка только БУДЕТ выполнена. Соответственно, поскольку до этой строчки переменная $arr нигде не объявлена, то до выполнения это строчки переменной вообще не существует. Переменная создается во время выполнения этой строчки.

UPD
Если вопрос заключается в том, почему переменной не существует до выполнения строчки
$arr = [0,1,2,3,4,5];
то представьте гипотетическую ситуацию
function TestFunction(){
    if ($_REQUEST['some_key'] == 1)
        return [1,2,3,4,5];
    else if ($_REQUEST['some_key'] == 2)
        return '12345';
    else if ($_REQUEST['some_key'] == 3)
        return 12345;
    //и т.д.
    else
        return null;
}

$arr = TestFunction();

var_dump($arr);


В этом случае в переменную $arr могут попасть кардинально разные значения, зависящие исключительно от того, что пришло в запросе. PHP не в состоянии предсказать, какой тип переменной создавать для $arr до того как выполниться функция TestFunction(). Именно поэтому в PHP переменные не существуют до первого присвоения. Это особенность любого языка с динамической типизацией.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы