phpstan-dba : Análise estática SQL baseada em Phpstan e inferência de tipo para a camada de acesso ao banco de dados phpstan-dba torna seus trabalhos de análise de código estático do Phpstan cientes dos tipos de dados no seu banco de dados. Com essas informações em questão, podemos detectar inconsistências de tipo entre o modelo de domínio e o schema de banco de dados. Além disso, os erros no manuseio de código dos resultados das consultas SQL podem ser detectados.
Esta extensão fornece os seguintes recursos, desde que você siga as regras:
doctrine/dbal , mysqli e PDO Caso você esteja usando a doutrina ORM, você pode usar phpstan-dba em conjunto com o Phpstan-Doctrine.
Observação
No momento, apenas os bancos de dados MySQL/MariaDB e PGSQL são suportados. Tecnicamente, não é um grande problema suportar outros bancos de dados.
Phpstan -DBA - Verifique suas consultas SQL como um chefe de maio de 2023, no PHP UserGroup em Frankfurt Main (Alemanha).
Veja a guia 'Arquivos alterados' da demonstração para uma rápida olhada.
Considere apoiar o projeto, para que possamos tornar essa ferramenta ainda melhor ainda mais rápida para todos.
Primeiro , use o Composer para instalar:
composer require --dev staabm/phpstan-dba Segundo , crie um arquivo phpstan-dba-bootstrap.php , que permite configurar phpstan-dba (isso opcionalmente inclui detalhes de conexão do banco de dados, para introspectar o banco de dados; se você preferir não fazer isso, consulte o registro e o reprodução:
<?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
);Observação
A configuração para PGSQL é bem semelhante
Terceiro , crie ou atualize seu arquivo phpstan.neon para que o bootstrapfiles inclua phpstan-dba-bootstrap.php .
Se você não estiver usando o Phpstan/Extension-Installer, também precisará incluir dba.neon .
Seu phpstan.neon pode parecer algo como:
parameters :
level : 8
paths :
- src/
bootstrapFiles :
- phpstan-dba-bootstrap.php
includes :
- ./vendor/staabm/phpstan-dba/config/dba.neon Finalmente , execute phpstan , por exemplo
./vendor/bin/phpstan analyse -c phpstan.neon