Debug

Actualización de la configuración de W4D para que xdebug funcione con php 8.1 y Xdebub 3.2.x

Submitted by Oskar on Mon, 27/02/2023 - 21:47

Estos últimos meses al actualizar versiones de PHP me ocurría que el debug dejaba de funcionar en VSCode y hasta ahora no he podido trastear con ello para ver que estaba ocurriendo.

Precisamente, mirando el docker-compose de este blog al cual si funciona bien el Xdebug lo que vi es que en el docker-compose.override.yml lo tenía diferente respecto al que tengo en algunos proyectos donde no me fuciona.

Lo que he probado y funciona es añadir este código:

Usar PHPStan para evitar que se nos cuelen funciones de depuración

Submitted by Oskar on Thu, 20/05/2021 - 23:39

Vamos por partes, cuando trabajamos con un editor de código en PHP deberíamos usar XDebug para depurar código, pero no siempre es así y a veces usamos funciones de depuración, en Drupal tenemos funciones propias `ddl()` del módulo devel debug log, `dpm`, o las funciones nativas de php `var_dump` o `print_r`, etc...

Si se nos cuela alguna de estas funciones se puede liar, desde errores al invocar una función que no existe en producción* hasta que salga todo el output de depuración a un cliente.

Para evitar este tipo de errores podemos usar PHPStan, en este caso y para ello necesitamos este complemento de PHPStan: https://github.com/spaze/phpstan-disallowed-calls 

Añadimos esta configuración en archivo php.neon

parameters:
    disallowedMethodCalls:
        -
            method: 'PotentiallyDangerous\Logger::log()'
            message: 'use our own logger instead'
        -
            method: 'Redis::connect()'
            message: 'use our own Redis instead'

    disallowedStaticCalls:
        -
            method: 'PotentiallyDangerous\Debugger::log()'
            message: 'use our own logger instead'

    disallowedFunctionCalls:
        -
            function: 'var_dump()'
            message: 'use logger instead'
        -
            function: 'print_r()'
            message: 'use logger instead'

    disallowedConstants:
        -
            constant: 'DATE_ISO8601'
            message: 'use DATE_ATOM instead'
        -
            class: 'DateTimeInterface'
            constant: 'ISO8601'
            message: 'use DateTimeInterface::ATOM instead'

    disallowedNamespaces:
        -
            namespace: 'Symfony\Component\HttpFoundation\RequestStack'
            message: 'pass Request via controller instead'
            allowIn:
                - tests/*
        -
            namespace: 'Assert\*'
            message: 'use Webmozart\Assert instead'


Disfrutadlo.

* Composer permite instalar dependencias en los entornos de desarrollo y que no se instalen en los entornos de producción `composer install XXX/XXXX --dev`

Subscribe to Debug