Ответы пользователя по тегу Xdebug
  • Почему XDebug не видит, что в переменной, на точке останова?

    @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 переменные не существуют до первого присвоения. Это особенность любого языка с динамической типизацией.
    Ответ написан
    Комментировать