PHP Debugger — це нове розширення для PHP, створене як форк Xdebug. З нього видалили все, крім step debugging: тут немає profiler, code coverage та tracing. Мета проєкту — запропонувати drop-in replacement, який створює значно менший overhead, коли розширення завантажене, але не використовується активно.
Benchmarks із використанням Valgrind instruction counting (проведені через GitHub Actions для PHP 8.2–8.5) демонструють рівень overhead, коли розширення завантажене без підключення до IDE:
| Benchmark | Xdebug | PHP Debugger |
|---|---|---|
| bench.php (синтетичний) | +661.6% | +12.9% |
| Rector (обробка файлу) | +124.5% | +3.6% |
| Symfony request | +35.3% | +1.3% |
PHP Debugger підтримує INI-префікси php_debugger.* та xdebug.*, тому наявні конфігурації працюють без змін:
; Ваша поточна конфігурація Xdebug працюватиме як є:
xdebug.mode = debug
xdebug.client_host = 127.0.0.1
xdebug.client_port = 9003
xdebug.start_with_request = trigger
; Або використовуйте новий префікс:
php_debugger.mode = debug
php_debugger.client_host = 127.0.0.1
php_debugger.client_port = 9003
php_debugger.start_with_request = trigger
Розширення також повертає true для extension_loaded("xdebug"), тому пакети, які перевіряють наявність Xdebug під час виконання, продовжать працювати. PhpStorm та VS Code функціонують без додаткових налаштувань.
Завдяки видаленню profiling, tracing та code coverage розширення фокусується на одному кейсі: роботі з breakpoints та покроковому виконанні коду.
| Feature | PHP Debugger | Xdebug |
|---|---|---|
| Step debugging (DBGp) | Так | Так |
xdebug_break() |
Працює | Працює |
XDEBUG_SESSION trigger |
Працює | Працює |
| Code coverage | Ні (використовуйте pcov) | Так |
| Profiling | Видалено | Так |
| Tracing | Видалено | Так |
Якщо вам потрібен code coverage, розробники радять використовувати pcov як окреме розширення.
Разом із повною сумісністю з Xdebug, розширення пропонує власні назви функцій та triggers як альтернативу:
// Сумісність із Xdebug (все ще працює):
xdebug_break();
// Еквіваленти PHP Debugger:
php_debugger_break();
php_debugger_info();
php_debugger_connect_to_client();
php_debugger_is_debugger_active();
php_debugger_notify();
Session triggers працюють аналогічно. XDEBUG_SESSION, XDEBUG_SESSION_START та XDEBUG_TRIGGER залишаються актуальними, але тепер доступні й еквіваленти: PHP_DEBUGGER_SESSION, PHP_DEBUGGER_SESSION_START та PHP_DEBUGGER_TRIGGER.
Binaries доступні на сторінці релізів. Після завантаження відповідного файлу для вашої версії PHP додайте розширення у php.ini:
zend_extension=php_debugger.so
Цей проєкт також є цікавим кейсом AI-assisted розробки. Згідно з README, усе розширення — створення форку, очищення коду, оптимізація та перейменування — було реалізовано за кілька днів за допомогою PhpStorm, Claude Code та OpenClaw.
Ознайомитися з проєктом можна на GitHub.
Використання Vite для створення фронтенд-ресурсів у вашому додатку Laravel може бути захоплюючим, але іноді ви можете стикнутися з певними помилками. У цій статті ми розглянемо чотири поширені помилки, з якими ви можете зіткнутися, а також підкажемо способи їх усунення, щоб ви могли знову зосередитися на розробці вашого додатку
Вам цікаво дізнатися, як спростити інтеграцію RabbitMQ у вашому Laravel-додатку? У нашій статті ми розглянемо пакет Simple RabbitMQ, який дозволяє легко налаштувати багатозʼєднання, публікувати повідомлення та обробляти черги за допомогою простого синтаксису. Читайте далі, щоб дізнатися більше!
Модельний контекстний протокол (MCP) відкриває нові горизонти в інтеграції AI-додатків з PHP. Дізнайтеся, як легко створити сервер, що відповідає MCP, та які можливості відкриваються для вашого проєкту