metisfw/phpstan-nette-links

PHPStan 的 Nette 框架链接检查扩展

安装次数: 592

依赖项: 0

建议者: 0

安全: 0

星标: 2

关注者: 1

分支: 1

开放问题: 0

类型:phpstan-extension

v0.2 2023-11-15 12:05 UTC

This package is auto-updated.

Last update: 2024-09-11 14:00:55 UTC


README

Build License

使用 PHPStan 在 Nette 框架应用程序中检查链接。

Preview

功能

  • 验证传递给 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

配置

为了使链接检查正常工作,必须设置 applicationMappingcontainerLoader(用于自动从您的应用程序中的 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