staabm / phpstan-dba
Requires
- php: ^7.2 || ^8.0
- composer-runtime-api: ^2.0
- composer/semver: ^3.2
- phpstan/phpstan: ^1.9.4
Requires (Dev)
- ext-mysqli: *
- ext-pdo: *
- dibi/dibi: ^4.2
- php-parallel-lint/php-parallel-lint: ^1.3
- phpstan/extension-installer: ^1.2
- phpstan/phpstan-deprecation-rules: ^1.1
- phpstan/phpstan-php-parser: ^1.1
- phpstan/phpstan-phpunit: ^1.0
- phpstan/phpstan-strict-rules: ^1.1
- phpunit/phpunit: ^8.5|^9.5
- symplify/easy-coding-standard: ^11.4
- tomasvotruba/unused-public: ^0.3
- vlucas/phpdotenv: ^5.4
Conflicts
- sqlftw/sqlftw: <0.1.10
- dev-main
- 457.x-dev
- 0.2.81
- 0.2.80
- 0.2.79
- 0.2.78
- 0.2.77
- 0.2.76
- 0.2.75
- 0.2.74
- 0.2.73
- 0.2.72
- 0.2.71
- 0.2.70
- 0.2.69
- 0.2.68
- 0.2.67
- 0.2.66
- 0.2.65
- 0.2.64
- 0.2.63
- 0.2.62
- 0.2.61
- 0.2.60
- 0.2.59
- 0.2.58
- 0.2.57
- 0.2.56
- 0.2.55
- 0.2.54
- 0.2.53
- 0.2.52
- 0.2.51
- 0.2.50
- 0.2.49
- 0.2.48
- 0.2.47
- 0.2.46
- 0.2.45
- 0.2.44
- 0.2.43
- 0.2.42
- 0.2.41
- 0.2.40
- 0.2.39
- 0.2.38
- 0.2.37
- 0.2.36
- 0.2.35
- 0.2.34
- 0.2.33
- 0.2.32
- 0.2.31
- 0.2.30
- 0.2.29
- 0.2.28
- 0.2.27
- 0.2.26
- 0.2.25
- 0.2.24
- 0.2.23
- 0.2.22
- 0.2.21
- 0.2.20
- 0.2.19
- 0.2.18
- 0.2.17
- 0.2.16
- 0.2.15
- 0.2.14
- 0.2.13
- 0.2.12
- 0.2.11
- 0.2.10
- 0.2.9
- 0.2.8
- 0.2.7
- 0.2.6
- 0.2.5
- 0.2.4
- 0.2.3
- 0.2.2
- 0.2.1
- 0.2
- 0.1.13
- 0.1.12
- 0.1.11
- 0.1.10
- 0.1.9
- 0.1.8
- 0.1.7
- 0.1.6
- 0.1.5
- 0.1.4
- 0.1.3
- 0.1.2
- 0.1.1
- 0.1
- dev-dependabot/composer/phpunit/phpunit-tw-9.6.21
- dev-less-previous
- dev-less-parents
- dev-dependabot/composer/dibi/dibi-tw-5.0
- dev-dependabot/composer/symplify/easy-coding-standard-tw-12.3
- dev-dependabot/composer/php-parallel-lint/php-parallel-lint-tw-1.4
- dev-re-enable
- dev-refac
- dev-stubs2
- dev-list
- dev-debug-hasher
- dev-close-cursor
- dev-hotifx
- dev-bug394
- dev-uknown-constants
- dev-mysqli
- dev-bug385
- dev-demo
- dev-test-obj
- dev-bug276
- dev-staabm-patch-2
- dev-debug
- dev-even-more-values
- dev-staabm-patch-1
- dev-param-types
This package is auto-updated.
Last update: 2024-09-19 20:48:49 UTC
README
phpstan-dba
使您的 phpstan 静态代码分析工作能够了解数据库中的数据类型。有了这些信息,我们可以检测您的领域模型和数据库模式之间的类型不一致。此外,还可以检测处理 SQL 查询结果的代码中的错误。
此扩展提供了以下功能,只要您 遵守规则
- 结果集类型推断
- 检测 SQL 查询错误
- 检测占位符/绑定值不匹配
- 查询计划分析 以检测性能问题
- 内置对
doctrine/dbal
、mysqli
和PDO
的支持 - API 以配置您自定义基于 SQL 的数据库访问层相同的特性
- 选择加入写查询分析(自版本 0.2.55+ 开始)
如果您使用 Doctrine ORM,您可能会将 phpstan-dba
与 phpstan-doctrine 一起使用。
注意
目前仅支持 MySQL/MariaDB 和 PGSQL 数据库。从技术上讲,支持其他数据库并不是一个大问题。
演讲
phpstan-dba - 像老板一样检查您的 SQL 查询 2023 年 5 月,在德国法兰克福 PHP 用户组。
演示
查看 DEMO-PR 的 '文件更改' 标签 以快速查看。
💌 支持 phpstan-dba
考虑支持此项目,这样我们就可以更快地使此工具更好地服务于每个人。
安装
首先,使用 composer 安装
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