phpstan-dba : Analyse statique SQL basée sur PHPSTAN et inférence de type pour la couche d'accès à la base de données phpstan-dba rend vos travaux d'analyse de code statique PHPSTAN Conscients des données dans votre base de données. Avec ces informations à portée de main, nous sommes en mesure de détecter les incohérences de type entre votre modèle de domaine et le schéma de base de données. De plus, les erreurs dans le traitement du code Les résultats des requêtes SQL peuvent être détectés.
Cette extension fournit les fonctionnalités suivantes, tant que vous respectez les règles:
doctrine/dbal , mysqli et PDO Dans le cas où vous utilisez Doctrine ORM, vous pouvez utiliser phpstan-dba en tandem avec phpstan-doctrine.
Note
À l'heure actuelle, seules les bases de données MySQL / MARIADB et PGSQL sont prises en charge. Techniquement, ce n'est pas un gros problème pour prendre en charge d'autres bases de données.
PHPSTAN-DBA - Vérifiez vos requêtes SQL comme un boss en mai 2023, chez PHP UserGroup dans Frankfurt Main (Allemagne).
Voir l'onglet «Fichiers modifiés» du DemoP pour un coup d'œil rapide.
Envisagez de soutenir le projet, afin que nous puissions rendre cet outil encore meilleur encore plus rapidement pour tout le monde.
Tout d'abord , utilisez le compositeur pour installer:
composer require --dev staabm/phpstan-dba Deuxièmement , créez un fichier phpstan-dba-bootstrap.php , qui vous permet de configurer phpstan-dba (cela inclut éventuellement les détails de connexion de la base de données, pour introspecter la base de données; si vous préférez ne pas faire ceci, voir l'enregistrement et la rediffusion:
<?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
);Note
La configuration de PGSQL est assez similaire
Troisièmement , créez ou mettez à jour votre fichier phpstan.neon , donc BootstrapFiles inclut phpstan-dba-bootstrap.php .
Si vous n'utilisez pas PHPSTAN / Extension-Installer, vous devrez également inclure dba.neon .
Votre phpstan.neon pourrait ressembler à quelque chose comme:
parameters :
level : 8
paths :
- src/
bootstrapFiles :
- phpstan-dba-bootstrap.php
includes :
- ./vendor/staabm/phpstan-dba/config/dba.neon Enfin , exécutez phpstan , par exemple
./vendor/bin/phpstan analyse -c phpstan.neon