macopedia / phpstan-magento1
PHPStan 扩展,用于允许分析 Magento 1 代码。
v1.0.7
2023-06-13 14:11 UTC
Requires
- php: >= 7.2
- phpstan/phpstan: >=0.12
Replaces
- inviqa/phpstan-magento1: 0.1.5
- vianetz/phpstan-magento1: 0.1.5
This package is auto-updated.
Last update: 2024-09-13 17:05:12 UTC
README
PHPStan 扩展,用于允许分析 Magento 1 代码。它运行时不需要数据库连接。
用法
将 phpstan.neon
添加到您的 Magento 1/OpenMage 项目中。
确保它包含以下内容
includes: - vendor/macopedia/phpstan-magento1/extension.neon
然后运行
composer require --dev macopedia/phpstan-magento1
替代 Magento 路径
默认情况下,此扩展假定 Magento 目录位于 %currentWorkingDirectory%/htdocs
。您可以通过更改 phpstan.neon 文件中的 magentoRootPath
参数来修改路径。将以下内容添加到项目的 phpstan.neon 文件中:
parameters: magentoRootPath: %currentWorkingDirectory%/htdocs
分析 Magento 模块的示例配置文件
includes: - vendor/macopedia/phpstan-magento1/extension.neon parameters: magentoRootPath: %currentWorkingDirectory%/htdocs paths: #lets start small with just our extensions - %currentWorkingDirectory%/app/code/local/VendorName/ModuleName excludePaths: - */Vendor/ModuleName/SomePathToExclude/* level: 0
已知问题
数据/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 中以忽略它