phpstan-dba : Analisis SQL Static Berbasis PHPStan dan Inferensi Jenis untuk Lapisan Akses Database phpstan-dba membuat pekerjaan analisis kode statis phpstan Anda mengetahui tipe data dalam database Anda. Dengan informasi ini, kami dapat mendeteksi ketidakkonsistenan tipe antara model domain Anda dan skema database. Selain itu kesalahan dalam penanganan kode hasil kueri SQL dapat dideteksi.
Ekstensi ini menyediakan fitur -fitur berikut, selama Anda tetap berpegang pada aturan:
doctrine/dbal , mysqli , dan PDO Jika Anda menggunakan Doctrine ORM, Anda dapat menggunakan phpstan-dba bersama-sama dengan phpstan-doctrine.
Catatan
Saat ini hanya database MySQL/MariADB dan PGSQL yang didukung. Secara teknis itu bukan masalah besar untuk mendukung database lain.
PHPSTAN -DBA - Periksa kueri SQL Anda seperti bos Mei 2023, di PHP UserGroup di Frankfurt Main (Jerman).
Lihat tab 'File yang diubah' dari Demo-PR untuk sekilas.
Pertimbangkan untuk mendukung proyek, sehingga kami dapat membuat alat ini lebih baik lebih cepat untuk semua orang.
Pertama , gunakan komposer untuk menginstal:
composer require --dev staabm/phpstan-dba Kedua , buat file phpstan-dba-bootstrap.php , yang memungkinkan Anda untuk mengkonfigurasi phpstan-dba (ini secara opsional menyertakan detail koneksi basis data, untuk mengintrospeksi database; jika Anda lebih suka tidak melakukan ini lihat catatan dan replay:
<?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
);Catatan
Konfigurasi untuk PGSQL sangat mirip
Ketiga , buat atau perbarui file phpstan.neon Anda sehingga bootstrapfiles termasuk phpstan-dba-bootstrap.php .
Jika Anda tidak menggunakan phpstan/extension-installer, Anda juga perlu menyertakan dba.neon .
phpstan.neon Anda mungkin terlihat seperti:
parameters :
level : 8
paths :
- src/
bootstrapFiles :
- phpstan-dba-bootstrap.php
includes :
- ./vendor/staabm/phpstan-dba/config/dba.neon Akhirnya , jalankan phpstan , misalnya
./vendor/bin/phpstan analyse -c phpstan.neon