phpstan-dba : การวิเคราะห์ SQL แบบคงที่ตาม PHPSTAN และการอนุมานประเภทสำหรับเลเยอร์การเข้าถึงฐานข้อมูล phpstan-dba ทำให้งานการวิเคราะห์รหัสคงที่ PHPSTAN ของคุณตระหนักถึงข้อมูลในฐานข้อมูลของคุณ ด้วยข้อมูลนี้อยู่ในมือเราสามารถตรวจจับประเภทความไม่สอดคล้องกันระหว่างโมเดลโดเมนของคุณและฐานข้อมูล-schema นอกจากนี้ยังสามารถตรวจพบข้อผิดพลาดในการจัดการรหัสผลลัพธ์ของการสืบค้น SQL ได้
ส่วนขยายนี้ให้คุณสมบัติต่อไปนี้ตราบใดที่คุณยึดติดกับกฎ:
doctrine/dbal , mysqli และ PDO ในกรณีที่คุณใช้หลักคำสอน ORM คุณอาจใช้ phpstan-dba ควบคู่กับ phpstan-doctrine
บันทึก
ในขณะนี้รองรับฐานข้อมูล MySQL/Mariadb และ PGSQL เท่านั้น ในทางเทคนิคแล้วมันไม่ใช่ปัญหาใหญ่ที่จะสนับสนุนฐานข้อมูลอื่น ๆ
PHPSTAN -DBA - ตรวจสอบการสืบค้น SQL ของคุณเช่นบอสพฤษภาคม 2023 ที่ PHP Usergroup ใน Frankfurt Main (เยอรมนี)
ดูแท็บ 'ไฟล์ที่เปลี่ยนแปลง' ของ Demo-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