thibaud-dauce / phpstan-blade
PHPStan 扩展,用于分析 Laravel Blade 视图。
0.5.0
2023-02-17 14:28 UTC
Requires
- laravel/framework: ^9.0 || ^10.0
- nikic/php-parser: ^4.13
- phpstan/phpstan: ^1.4
Requires (Dev)
- phpunit/phpunit: ^9.5
- symfony/process: ^6.0
README
此 PHPStan 扩展用于分析 Blade 视图中的错误。
安装
使用 Composer 安装扩展。
composer require thibaud-dauce/phpstan-blade
将扩展配置文件添加到您的 phpstan.neon
includes: - ./phpstan-baseline.neon - ./vendor/nunomaduro/larastan/extension.neon - ./vendor/thibaud-dauce/phpstan-blade/extension.neon parameters: …
将此 Composer 脚本添加到您的 composer.json
{ "scripts": { "post-root-package-install": [ "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" ], "post-create-project-cmd": [ "@php artisan key:generate" ], "post-autoload-dump": [ "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", "@php artisan package:discover" ], "phpstan": [ "@php artisan phpstan-blade:touch-cache", "./vendor/bin/phpstan analyse --error-format blade" ] }, }
然后,您可以通过运行 composer phpstan
来更新缓存(如果您想了解更多关于为什么需要它,请参阅 TouchCacheCommand
注释),并使用 Blade 格式化程序运行分析(Blade 格式化程序是必需的,以允许显示视图包含的堆栈跟踪)。
功能
- 分析
view()
调用 - 支持 Blade 指令
- 支持视图命名空间
- 支持 Livewire 组件
- 支持
@include
,并显示完整的堆栈跟踪,精确显示错误的位置和上下文 - 支持可邮寄的视图
- 支持
compact()
函数用于视图参数
局限性
Blade 视图中的 @var docblocks
如果您想在视图中添加 docblocks 以添加类型信息,如
@php /** @var string */ $name = config('app.name'); @endphp {{ $name }}
您需要在 docblock 内指定变量名称,因为我们也会在行间添加 docblocks,所以您的 docblocks 不会直接位于分配之上。
@php /** @var string $name */ $name = config('app.name'); @endphp {{ $name }}
常量类型 (:ConstantTypes)
目前,如果您将 true
传递给视图,类型将被泛化为 bool
以避免诸如 "If 条件始终为真。" 的错误。如果所有 view()
调用都传递 true
而条件始终为真,那么有一种方式可以引发错误可能会很好。但我认为这很难实现。
如果您将 ['something' => null]
传递给视图,我将类型转换为 mixed
,因此您可能会遇到一些错误。您应该指定空值的类型,这样我就可以提供正确的类型信息。
/** @var ?User */ $user = null; return view('user', [ 'user' => $user, ]);
开发
扩展代码中有许多注释来解释它正在做什么。主入口点是 ViewFunctionRule
类。