phpstan-dba : PHPSTAN-basierte SQL-statische Analyse und Typinferenz für die Datenbankzugriffsschicht phpstan-dba macht Ihre Jobs mit statischer Code-Analyse von Phpstan auf DataTypes in Ihrer Datenbank aufmerksam. Mit diesen Informationen können wir Inkonsistenzen zwischen Ihrem Domänenmodell und dem Datenbankschema erkennen. Zusätzlich können Fehler beim Code -Umgang mit den Ergebnissen von SQL -Abfragen erkannt werden.
Diese Erweiterung enthält die folgenden Funktionen, solange Sie sich an die Regeln halten:
doctrine/dbal , mysqli und PDO Falls Sie Doctrine ORM verwenden, können Sie phpstan-dba zusammen mit Phpstan-doctrin verwenden.
Notiz
Im Moment werden nur MySQL/Mariadb- und PGSQL -Datenbanken unterstützt. Technisch gesehen ist es jedoch kein großes Problem, andere Datenbanken zu unterstützen.
PHPSTAN -DBA - Überprüfen Sie Ihre SQL -Abfragen wie ein Chef Mai 2023 bei PHP UserGroup in Frankfurt Main (Deutschland).
In der Registerkarte "Dateien geändert" der Demo-PR finden Sie einen kurzen Blick.
Erwägen Sie, das Projekt zu unterstützen, damit wir dieses Tool noch schneller für alle besser machen können.
Verwenden Sie zunächst einen Komponisten, um zu installieren:
composer require --dev staabm/phpstan-dba Zweitens erstellen Sie eine phpstan-dba-bootstrap.php Datei, mit der Sie phpstan-dba konfigurieren können (dies enthält optional Datenbankverbindungsdetails, um die Datenbank nachzuspiegeln.
<?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
);Notiz
Die Konfiguration für PGSQL ist ziemlich ähnlich
Drittens erstellen oder aktualisieren Sie Ihre phpstan.neon Datei, damit die Bootstrapfiles phpstan-dba-bootstrap.php enthält.
Wenn Sie Phpstan/Extension-Installer nicht verwenden, müssen Sie auch dba.neon einbeziehen.
Ihr phpstan.neon könnte so aussehen wie:
parameters :
level : 8
paths :
- src/
bootstrapFiles :
- phpstan-dba-bootstrap.php
includes :
- ./vendor/staabm/phpstan-dba/config/dba.neon Schließlich rennen Sie phpstan , z. B.
./vendor/bin/phpstan analyse -c phpstan.neon