Pitch: Abri o código de um debugger PHP que funciona sem Xdebug, tem um playground pra testar no terminal
Fala pessoal, pra quem acompanhou os posts anteriores sobre o DDLess, tenho uma novidade: o motor de debug agora é open source e vem com um playground pra você testar direto no terminal.
O que é o ddless-engine?
É o motor PHP que faz o debug funcionar sem Xdebug, sem extensão, sem socket. Ele usa instrumentação via AST (nikic/PHP-Parser) e comunicação por arquivos. Se o PHP roda, ele debuga.
O playground
Você clona o repo dentro do seu projeto e testa no terminal:
Debug rápido:
php src/playground/test_trigger.php --code 'x = 1; y = 2; echo x + y;' --bp 1
Debug com boot do framework:
php src/playground/test_trigger.php --file test.php --bp app/Services/OrderService.php:38 --boot boot.php
Test method via container:
php src/playground/test_trigger.php --test method --framework laravel --class "App\Services\OrderService" --method calculate --params-file params.php
Task runner com contexto do framework:
php src/playground/test_trigger.php --test task --framework laravel -c '$this->info("Users: " . \App\Models\User::count());'
Debug HTTP real:
DDLESS_FRAMEWORK=laravel php -S 0.0.0.0:8001 src/playground/test_trigger.php
Tudo sem instalar nada além do PHP.
Por que abri o código?
Quero que o pessoal conheça conceitos que a gente raramente usa no dia a dia:
- Closure::bind() pra sequestrar o $this de outro objeto
- Stream wrappers pra interceptar todo include/require que o PHP faz
- AST com nikic/PHP-Parser pra entender código PHP como o próprio PHP entende
- get_defined_vars() pra capturar o estado do escopo em tempo real
- $GLOBALS como canal de transporte entre contextos isolados
E também pra receber contribuições. O engine já suporta Laravel, Symfony, CodeIgniter, Tempest, WordPress e PHP genérico. Adicionar um novo framework são 3 arquivos (HTTP handler, method executor, task runner). O CONTRIBUTING.md explica tudo passo a passo.
Se você trabalha com CakePHP, Yii, Slim, Swoole ou qualquer outro framework PHP e quer adicionar suporte, PRs são bem-vindos.
Engine: https://github.com/behindSolution/ddless-engine
App desktop (gratuito pra debug local): https://ddless.com