Комментарии 11
Xdebug это замечательно, но… всречный вопрос на ваш первый же вопрос в статье: php -a
Чем не подошел?
https://www.php.net/manual/ru/features.commandline.interactive.php
Хотя бы тем, что он не интегрирован с Phpstorm, и там нету автодополнения и прочих фич. Просто сравните php -a, которая не интегрирована, и то, как выглядит консоль, которая интегрирована. Я уж молчу про способы выполнять код вообще без консоли
UPD: все таки есть способ "прокинуть" автодополнение IDE в php -a
. Правда, это недокументированная возможность, и в итоге даже больший костыль, чем Xdebug в качестве REPL, и в целом уступает ему по возможностям и удобству. Написал об этом отдельную статью
Объясните зачем это вообще нужно ?
Проверить выражение в одну строку ? То хватает сейчас php песочниц и с разными версиями можно проверить. В шторме есть возможность создать scratch файл и его сразу выполнить
Но только ни в какие левые песочницы и в scratch вы не подключите ваш проект с его классами и т.д. Не сможете протестировать методы из этих классов. И тем более не сможете выполнять там методы, которые например делают запросы к БД. Здесь же это возможно, нет никаких препятствий для этого. А это все бывает очень полезно, когда вы изучаете чужой код в проекте, и не можете понять, что делает данный его кусок. А тут можно его выполнить прямо в редакторе, "не отходя от кассы".
И никто не говорит что только в одну строку, в консоли можно и куски кода выполнять.
А scratch здесь больше для другого подходит, не как скрипт, а как "игровая площадка", куда можно просто накидать черновые куски кода и выполнять их. Можно и просто выполнять скрипты по выражениям, но не строго пошагово, как в обычной отладке, а в любом удобном вам порядке.
В общем, вариантов для чего это можно использовать, много.
когда не понятно что делает код, то идёшь дебагером пошагово и смотришь дамп, понимание приходит значительно быстрее.
ещё момент, PHP в отличие от того же rust компилировать не нужно, и этот же код можно написать внутри метода
С одной стороны я вас понимаю, допустим была реальная ситуация когда писал парсер и было удобно прямо сразу видеть что получаешь на выходе (добавляя фильтры и регулярки), с другой, не представляю где это ещё может пригодиться.
Ну пошагово, это еще нужно добраться до того места, это еще нужно отловить приложение на этом моменте. Ну где-то действительно больше подходит пошагово. Но когда в коде банально есть вызов какого-нибудь метода, который к к тому же не принимает параметры, то проще всего узнать что он возвращает - через Quick Evaluate Expression, потому что это можно сделать в один клик, без танцев с бубнами. А если таковых десятки, то это уже ощутимо, вручную на каждый из них засорять код дампами. К тому же Quick Evaluate Expression и Evaluate Expression делают графическое представление тех же массивов/объектов. Плюс окон Evaluate Expression можно открыть сколько угодно, и перед глазами будет удобный вывод результатов выполнения разных методов. Плюс можно быстро выполнить разные вариации выражений, без всяких перезапусков файла.
Да и в пошаговой отладке эти фичи тоже можно применять, изначально они для нее и сделаны
В общем с тех пор как я начал пользоваться всем этим, то уже и представить себе не могу процесс разработки без этого
Xdebug в качестве Php консоли — чем заменить Python/JS консоль в Phpstorm | Запуск Xdebug после установки за 30 секунд