vianetz/phpstan-magento1

PHPStan 扩展,允许分析 Magento 1/OpenMage 源代码。

v0.1.5 2019-04-12 10:10 UTC

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 中以忽略它