staabm/phpstan-dba

资助包维护!
staabm

安装次数: 1,350,239

依赖者: 3

建议者: 0

安全: 0

星标: 250

关注者: 6

分支: 17

开放问题: 87

类型:phpstan-extension

0.2.81 2024-06-04 12:11 UTC

README

phpstan-dba 使您的 phpstan 静态代码分析工作能够了解数据库中的数据类型。有了这些信息,我们可以检测您的领域模型和数据库模式之间的类型不一致。此外,还可以检测处理 SQL 查询结果的代码中的错误。

此扩展提供了以下功能,只要您 遵守规则

如果您使用 Doctrine ORM,您可能会将 phpstan-dbaphpstan-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

阅读更多