phpstan-dba : Статический анализ SQL на основе PHPSTAN и вывод типа для уровня доступа к базе данных phpstan-dba сообщает ваши задания PHPSTAN Static Code, осведомленные о данных данных в вашей базе данных. С помощью этой информации мы можем обнаружить несоответствия типа между вашей доменной моделью и базой схемой. Кроме того, ошибки в обработке кода, результаты запросов SQL могут быть обнаружены.
Это расширение предоставляет следующие функции, если вы придерживаетесь правил:
doctrine/dbal , mysqli и PDO Если вы используете доктрину ORM, вы можете использовать phpstan-dba в тандеме с Phpstan-Doctrine.
Примечание
На данный момент поддерживаются только базы данных MySQL/MariaDB и PGSQL. Технически это не большая проблема для поддержки других баз данных.
PHPSTAN -DBA - Проверьте свои запросы SQL, как босс May 2023, в PHP UserGroup во Франкфурте Майн (Германия).
Смотрите вкладку «Файлы» «Изменены» демо-PR для быстрого взгляда.
Подумайте о поддержке проекта, чтобы мы могли сделать этот инструмент еще лучше еще быстрее для всех.
Во -первых , используйте композитор для установки:
composer require --dev staabm/phpstan-dba Во-вторых , создайте файл phpstan-dba-bootstrap.php , который позволяет вам настроить phpstan-dba (это необязательно включает в себя сведения об подключении к базе данных, чтобы интро Открыть базу данных; если вы не будете делать это, см. Запись и воспроизведение:
<?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
);Примечание
Конфигурация для PGSQL довольно похожа
В-третьих , создайте или обновите свой файл phpstan.neon , чтобы Bootstrapfiles включал phpstan-dba-bootstrap.php .
Если вы не используете Phpstan/Extension-Installer, вам также нужно будет включить dba.neon .
Ваш phpstan.neon может выглядеть как -то вроде:
parameters :
level : 8
paths :
- src/
bootstrapFiles :
- phpstan-dba-bootstrap.php
includes :
- ./vendor/staabm/phpstan-dba/config/dba.neon Наконец , запустите phpstan , например,
./vendor/bin/phpstan analyse -c phpstan.neon