检查不同PHP版本的代码兼容性

sqxo8psd  于 6个月前  发布在  PHP
关注(0)|答案(1)|浏览(86)

我正在寻找一种方法来检查我的PHP代码与不同PHP版本的兼容性。特别是与PHP版本7.2 - 8.1的兼容性是我正在寻找的。起初我尝试了phpcs,但结果不是很好,所以我尝试了一些不同的东西。
为了测试代码,我引入了phpstan,它运行得非常好(对于一个PHP版本),但似乎只能为每个配置指定一个PHP版本。
我的phpstan. neon 文件:

parameters:
        level: 0
        phpVersion: 70400
        paths:
                - src/project
                - src/library

字符串
运行vendor/bin/phpstan -c phpstan.neon按预期工作。
尝试为phpVersion指定多个值,但这只会产生错误,因为参数必须是int|空值。
有没有人知道一种方法可以在一次运行phpstan中检查多个PHP版本?也许有一个适合不同PHP版本的规则集?

4smxwvx5

4smxwvx51#

你必须使用phpstan条件配置。它是通过在主phpstan配置中包含一个php条件php版本检查器来实现的。在phpstan. neon 中,添加:

includes:
- phpstan.conditional.php

字符串
在phpstan.conditional.php中添加:

<?php declare(strict_types = 1);

/**
 * Add conditionnally extra phpstan rules
 * Typically used for specific PHP versions
 * Must be called in main PHPStan neon config file
 */

$includes = [];

// For versions smaller that PHP 8.3.
if (PHP_VERSION_ID < 80300) {
    $includes[] = __DIR__ . '/phpstan-rules-lt-8.3.neon';
}

$config = [];
$config['includes'] = $includes;
$config['parameters']['phpVersion'] = PHP_VERSION_ID;

return $config;


然后将PHP 8.3以下版本的特定规则添加到phpstan-rules-lt-8.3.neon中
当在PHP < 8.3的环境中执行PHPStan时,这些规则将适用。当在PHP => 8.3的环境中执行PHPStan时,这些规则将不会被执行。

相关问题