metisfw / phpstan-nette-links
PHPStan 的 Nette 框架链接检查扩展
Requires
- php: ^7.2 || ^8.0
- phpstan/phpstan: ^1.10
- phpstan/phpstan-nette: ^1.2.9
Requires (Dev)
- nette/application: ^3.0
- nette/di: ^2.3.0 || ^3.0.0
- nette/forms: ^3.0
- nette/utils: ^2.3.0 || ^3.0.0
- nikic/php-parser: ^4.13.2
- php-parallel-lint/php-parallel-lint: ^1.2
- phpstan/phpstan-php-parser: ^1.1
- phpstan/phpstan-phpunit: ^1.0
- phpstan/phpstan-strict-rules: ^1.0
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-09-11 14:00:55 UTC
README
使用 PHPStan 在 Nette 框架应用程序中检查链接。
功能
- 验证传递给
link()
、lazyLink()
、redirect()
、redirectPermanent()
、forward()
、isLinkCurrent()
和canonicalize()
方法的参数 - 适用于演示者、组件和 'LinkGenerator' 服务
- 检查传递的目的地是否有效,并且指向现有的演示者、操作或信号
- 检查传递的链接参数是否有效,并且与相关的
action*()
、render*()
或handle*()
方法签名匹配 - 还检查指向已知类型子组件的链接(必须存在
createComponent*()
方法)
安装
要使用此扩展,请在 Composer 中引入它
composer require --dev metisfw/phpstan-nette-links
如果您还安装了 phpstan/extension-installer,那么您就设置好了!
手动安装
如果您不想使用 phpstan/extension-installer
,请在您的项目 PHPStan 配置中包含 extension.neon
includes:
- vendor/metisfw/phpstan-nette-links/extension.neon
为了执行框架特定的检查,请也包含此文件
- vendor/metisfw/phpstan-nette-links/rules.neon
配置
为了使链接检查正常工作,必须设置 applicationMapping
或 containerLoader
(用于自动从您的应用程序中的 PresenterFactory
服务加载映射)。
如果您使用非标准的 PresenterFactory
,此功能可能无法正常工作,因为将演示者名称(例如 MyModule:Homepage
)映射到演示者类(例如 \App\Presenters\MyModule\HomepagePresenter
)的逻辑与反之亦然可能不同。
如果您使用 containerLoader
,您可以通过在您的自定义 PresenterFactory
类中实现 unformatPresenterClass
方法来解决此问题。该方法应返回给定演示者类的演示者名称。
或者,您可以创建自定义实现,覆盖 PHPStanNetteLinks\Nette\PresenterResolver
服务,并在您的 PHPStan 配置中替换它
services: nettePresenterResolver: class: MyCustom\PresenterResolver
containerLoader
容器加载器可用于创建 Nette 应用程序 DI 容器实例。
示例
parameters: netteLinks: containerLoader: './containerLoader.php'
示例 containerLoader.php
<?php return App\Bootstrap::boot()->createContainer();
applicationMapping
应用映射用于在链接检查中映射演示者标识符到类。
示例
parameters: netteLinks: applicationMapping: *: App\Presenters\*\*Presenter