phpstan-dba : تحليل SQL ثابت ومقره Phpstan وتكنولوجيا الاستدلال لطبقة الوصول إلى قاعدة البيانات يجعل phpstan-dba وظائف تحليل الكود الثابت Phpstan على دراية بأنواع البيانات داخل قاعدة البيانات الخاصة بك. من خلال هذه المعلومات الموجودة ، يمكننا اكتشاف التناقضات بين نوع النطاق وعلم قاعدة البيانات. بالإضافة إلى ذلك ، يمكن اكتشاف الأخطاء في التعليمات البرمجية التي تعالج نتائج استعلامات SQL.
يوفر هذا الامتداد الميزات التالية ، طالما أنك تلتزم بالقواعد:
doctrine/dbal و mysqli و PDO في حال كنت تستخدم عقيدة ORM ، يمكنك استخدام phpstan-dba جنبًا إلى جنب مع Phpstan-Doctrine.
ملحوظة
في الوقت الحالي ، يتم دعم قواعد بيانات MySQL/MariaDB و PGSQL فقط. من الناحية الفنية ، فإنه ليس مشكلة كبيرة لدعم قواعد البيانات الأخرى.
Phpstan -DBA - تحقق من استعلامات SQL مثل Boss May 2023 ، في PHP Usergroup في Frankfurt Main (ألمانيا).
راجع علامة التبويب "الملفات التي تم تغييرها" من PRE-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/extrupsholer ، فستحتاج أيضًا إلى تضمين 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