vianetz / phpstan-magento1
PHPStan 扩展,允许分析 Magento 1/OpenMage 源代码。
v0.1.5
2019-04-12 10:10 UTC
Requires
- phpstan/phpstan: 0.11.*
This package is auto-updated.
Last update: 2024-09-04 18:24:02 UTC
README
用于允许分析 Magento 1/OpenMage 代码的 PHPStan 扩展。
用法
将 phpstan.neon
添加到您的 Magento 1/OpenMage 项目中。
确保它包含
includes: - vendor/vianetz/phpstan-magento1/extension.neon
然后运行
composer require --dev vianetz/phpstan-magento1
备选 Magento 路径
默认情况下,此扩展假定 Magento 目录是 %currentWorkingDirectory%/htdocs
。
您可以通过更改 phpstan.neon
文件中的 magentoRootDirectory
参数来调整路径。
分析 Magento 扩展的示例配置文件
includes: - vendor/vianetz/phpstan-magento1/extension.neon parameters: paths: - %currentWorkingDirectory%/htdocs/app/code/local
已知问题
数据/SQL 脚本无法测试
由于这些脚本由于从设置类中包含而使用了一个假定的 $this
变量,需要进行工作来
- 找出正确的设置类
- 以某种方式让 phpstan 知道它对该文件
Magento 流畅接口类对子类不是流畅的
这导致对类对象的后续调用假设了定义返回类型的超类的范围。
这是由于它们的 PHPDoc 没有用最新的方式使用 $this
作为类型来指定子类的流畅性。
解决选项
- 避免在这些类上使用流畅接口
- 修补 Magento 代码以使用 $this 作为返回类型
- 在子类中为调用的方法定义 @method PHPDoc
- 将错误添加到 phpstan 配置的 parameters.ignoreErrors 中以忽略它 - 这将失去正确类型化流畅接口后续方法的能力
Mage_Core_Model_Abstract::load $id
不是一个整数
这是由于 Mage_Core_Model_Abstract 类的 load 方法的 PHPDoc 不充分。它应该使用 "mixed" 类型来支持当第二个参数指定一个字段时。
PHPStan 扩展无法更改现有方法参数。
解决选项
- 修补 Magento 代码以使用 mixed 作为 $id 参数类型
- 如果超级类链中可用,请使用具有正确参数类型化的 loadBy{Field} 方法
- 在您的类(扩展 Mage_Core_Model_Abstract 或其子类)中定义 @method PHPDoc,并使用正确的参数类型
- 将错误添加到 phpstan 配置的 parameters.ignoreErrors 中以忽略它