friendsoftypo3/phpstan-typo3

PHPStan 的 TYPO3 规则

安装次数: 475,356

依赖关系: 71

建议者: 0

安全性: 0

星标: 17

关注者: 10

分支: 8

开放问题: 5

类型:phpstan-extension

0.9.0 2022-01-17 07:24 UTC

README

TYPO3 CMS 类反射扩展,用于 PHPStan 和框架特定规则

本扩展提供以下功能

  • \TYPO3\CMS\Core\Context\Context->getAspect() 提供正确的返回类型。
  • \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance() 提供正确的返回类型。
  • \TYPO3\CMS\Extbase\Object\ObjectManagerInterface->get() 提供正确的返回类型。
  • \TYPO3\CMS\Extbase\Object\ObjectManager->get() 提供正确的返回类型。
  • \TYPO3\CMS\Extbase\Persistence\Generic\Query->execute() 提供正确的返回类型。
  • \TYPO3\CMS\Extbase\Persistence\QueryInterface->execute() 提供正确的返回类型。
关于 GeneralUtility::makeInstance() 的详细信息

以下情况返回动态返回类型:

  • GeneralUtility::makeInstance(\TYPO3\CMS\Core\DataHandling\DataHandler::class)
  • GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\DataHandling\\DataHandler')
  • GeneralUtility::makeInstance(self::class)
  • GeneralUtility::makeInstance(static::class)
关于 ObjectManagerInterface::get() 和 ObjectManager::get() 的详细信息

以下情况返回动态返回类型:

  • ObjectManager->get(\TYPO3\CMS\Core\DataHandling\DataHandler::class)
  • ObjectManager->get('TYPO3\\CMS\\Core\\DataHandling\\DataHandler')
  • ObjectManager->get(self::class)
  • ObjectManager->get(static::class)

安装与配置

要使用此扩展,请在 Composer 中要求它

composer require friendsoftypo3/phpstan-typo3 --dev

安装后,将以下内容添加到您的 phpstan.neon 配置文件中

includes:
    - vendor/friendsoftypo3/phpstan-typo3/extension.neon

常见问题解答

我发现了这个扩展和 Sascha 的(saschaegerer/phpstan-typo3)扩展。为什么有两个扩展?我应该使用哪一个?

这个包有一个特定的目的。它是为了帮助使 TYPO3 核心与 phpstan max 级别兼容。为了实现这一点,核心团队需要能够拥有自己的扩展,以便在核心本身更改时能够快速调整。例如,如果发布了一个新的核心版本,核心团队可以快速提高 typo3/cms-coretypo3/cms-extbase 的依赖性约束,而这在使用 Sascha 的包时是无法做到的。

Sascha 的包中包含的动态返回类型提供者目前(尚未)需要使核心与 phpstan 兼容。

总结一下:这两个扩展之间没有竞争,这个扩展不应由用户使用,而应仅由 TYPO3 核心使用。