phpstan-dba : análisis estático SQL basado en Phpstan e inferencia de tipo para la capa de acceso a la base de datos phpstan-dba hace que sus trabajos de análisis de código estático Phpstan sean conscientes de los tipos de datos dentro de su base de datos. Con esta información en cuestión, podemos detectar inconsistencias de tipo entre su modelo de dominio y la base de datos. Además, se pueden detectar errores en el código que manejan los resultados de las consultas SQL.
Esta extensión proporciona las siguientes características, siempre que se mantenga en las reglas:
doctrine/dbal , mysqli y PDO En caso de que esté utilizando Doctrine ORM, puede usar phpstan-dba en conjunto con phpstan-doctrine.
Nota
Por el momento solo se admiten bases de datos MySQL/MariadB y PGSQL. Sin embargo, técnicamente no es un gran problema para admitir otras bases de datos.
PHPSTAN -DBA: consulte sus consultas SQL como un jefe de mayo de 2023, en PHP UserGroup en Frankfurt Main (Alemania).
Vea la pestaña 'Archivos cambiados' de la demostración-PR para un vistazo rápido.
Considere apoyar el proyecto, para que podamos hacer que esta herramienta sea aún mejor aún más rápida para todos.
Primero , use el compositor para instalar:
composer require --dev staabm/phpstan-dba En segundo lugar , cree un archivo phpstan-dba-bootstrap.php , que le permite configurar phpstan-dba (esto opcionalmente incluye detalles de conexión de la base de datos, para introspectar la base de datos; si prefiere no hacer esto, consulte el registro y la repetición:
<?php // phpstan-dba-bootstrap.php
use staabm PHPStanDba DbSchema SchemaHasherMysql ;
use staabm PHPStanDba QueryReflection RuntimeConfiguration ;
use staabm PHPStanDba QueryReflection MysqliQueryReflector ;
use staabm PHPStanDba QueryReflection QueryReflection ;
use staabm PHPStanDba QueryReflection ReplayAndRecordingQueryReflector ;
use staabm PHPStanDba QueryReflection ReplayQueryReflector ;
use staabm PHPStanDba QueryReflection ReflectionCache ;
require_once __DIR__ . ' /vendor/autoload.php ' ;
$ cacheFile = __DIR__ . ' /.phpstan-dba.cache ' ;
$ config = new RuntimeConfiguration ();
// $config->debugMode(true);
// $config->stringifyTypes(true);
// $config->analyzeQueryPlans(true);
// $config->utilizeSqlAst(true);
// TODO: Put your database credentials here
$ mysqli = new mysqli ( ' hostname ' , ' username ' , ' password ' , ' database ' );
QueryReflection:: setupReflector (
new ReplayAndRecordingQueryReflector (
ReflectionCache:: create (
$ cacheFile
),
// XXX alternatively you can use PdoMysqlQueryReflector instead
new MysqliQueryReflector ( $ mysqli ),
new SchemaHasherMysql ( $ mysqli )
),
$ config
);Nota
La configuración para PGSQL es bastante similar
En tercer lugar , cree o actualice su archivo phpstan.neon para que BootstraPFiles incluya phpstan-dba-bootstrap.php .
Si no está utilizando PHPSTAN/Extension-Installer, también deberá incluir dba.neon .
Tu phpstan.neon podría verse algo así como:
parameters :
level : 8
paths :
- src/
bootstrapFiles :
- phpstan-dba-bootstrap.php
includes :
- ./vendor/staabm/phpstan-dba/config/dba.neon Finalmente , ejecute phpstan , por ejemplo
./vendor/bin/phpstan analyse -c phpstan.neon