symplify/phpstan-extensions

以 'symplify' 错误格式预处理的错误消息,容器感知的测试用例和其他对 PHPStan 有用的扩展

安装次数: 4,148,002

依赖者: 77

建议者: 0

安全: 0

星标: 29

关注者: 3

分支: 1

公开问题: 0

类型:phpstan-extension

11.4.3 2024-01-05 11:11 UTC

This package is auto-updated.

Last update: 2024-09-05 12:31:11 UTC


README

Downloads total

安装

composer require symplify/phpstan-extensions --dev

更新配置

# phpstan.neon
includes:
    - 'vendor/symplify/phpstan-extensions/config/config.neon'

使用

Symplify 错误格式化工具

最佳搭配 anthraxx/intellij-awesome-console

  • 您想点击错误并直接跳转到文件中报告的行吗?
  • 您想将正则表达式转义的错误复制粘贴到您的 ignoreErrors 吗?
vendor/bin/phpstan analyse src --level max --error-format symplify

------------------------------------------------------------------------------------------
src/Command/ReleaseCommand.php:51
------------------------------------------------------------------------------------------
- "Call to an undefined method Symplify\\Command\\ReleaseCommand\:\:nonExistingCall\(\)"
------------------------------------------------------------------------------------------

返回类型扩展

Symplify\PHPStanExtensions\ReturnTypeExtension\ContainerGetTypeExtension

使用 Symfony 容器和类型作为参数,您总是知道返回的是 相同的类型

use Symfony\Component\DependencyInjection\Container;

/** @var Container $container */
// PHPStan: object ❌
$container->get(Type::class);
// Reality: Type ✅
$container->get(Type::class);

// same for in-controller/container-aware context
$this->get(Type::class);

Symplify\PHPStanExtensions\ReturnTypeExtension\KernelGetContainerAfterBootReturnTypeExtension

在 Symfony Kernel 启动后,getContainer() 总是返回容器

use Symfony\Component\HttpKernel\Kernel;

final class AppKernel extends Kernel
{
    // ...
}

$kernel = new AppKernel('prod', false);
$kernel->boot();

// PHPStan: null|ContainerInterface ❌
$kernel->getContainer();
// Reality: ContainerInterface ✅
$kernel->getContainer();
// Reality: ContainerInterface ✅

Symplify\PHPStanExtensions\ReturnTypeExtension\SplFileInfoTolerantReturnTypeExtension

Symfony Finder 只能找到存在的文件(明显),因此 getRealPath() 总是返回 string

use Symfony\Component\Finder\Finder;

$finder = new Finder();

foreach ($finder as $fileInfo) {
    // PHPStan: false|string ❌
    $fileInfo->getRealPath();
    // Reality: string ✅
    $fileInfo->getRealPath();
}

报告问题

如果您遇到错误或想请求新功能,请转到 Symplify monorepo 问题跟踪器

贡献

此包的源代码包含在 Symplify monorepo 中。我们欢迎在 symplify/symplify 上为此包做出贡献。