Phpstan Class_parent 未找到
Phpstan Class_parent not found
我正在尝试让静态 PHP 代码分析在我的 OXID 6 eshop 上运行。
然而,当谈到这个问题时,我遇到了困难:
当我 运行 vendor/bin/phpstan analyse --configuration phpstan.neon source/modules/myvendor/mymodule
时,我总是得到 Class mynamespace\Article_parent not found
.
这样的错误
这可能是因为在Oxid中,eshop classes并没有被直接覆盖,而是这样声明的
<?php
namespace mynamespace;
class Article extends Article_parent
{
...
并且在 metadata.php
中定义了被覆盖的 class:
'extend' => [
\OxidEsales\Eshop\Application\Model\Article::class => \mynamespace\Article::class,
],
Phpstan 似乎无法解决这个问题,我尝试了很多不同的配置文件,比如这个
parameters:
level: max
inferPrivatePropertyTypeFromConstructor: true
autoload_files:
- vendor/oxid-esales/oxideshop-ce/source/oxfunctions.php
- vendor/oxid-esales/oxideshop-ce/source/overridablefunctions.php
或者这个
parameters:
level: 7
autoload_files:
- vendor/oxid-esales/testing-library/base.php
- vendor/oxid-esales/oxideshop-ce/source/oxfunctions.php
- vendor/autoload.php
但无济于事。
我怎样才能让 phpstan 工作?
请升级到最新的 PHPStan 版本 0.12.33。
在 0.12.26 版本中,this article 中描述了很多重做。主要的收获是,对于 class 显然存在而无需任何额外配置的元素,您不应该再得到“class 未找到”。
此外,autoload_files 已被弃用。请按照 Discovering Symbols 指南查看该怎么做(您很可能只需从配置中删除此部分)。
\mynamespace\Article_parent
class 不存在,将在运行时创建为别名。这是因为它取决于您的配置/此别名指向的其他安装模块。
我的同事 Alfred Bez 创建了 oxid-dump-autoload
工具,它将根据您当前的配置和设置转储模块链,以便 PHPStan / Psalm 可以找到 classes:
https://github.com/alfredbez/oxid-dump-autoload
希望能帮到你
我正在尝试让静态 PHP 代码分析在我的 OXID 6 eshop 上运行。
然而,当谈到这个问题时,我遇到了困难:
当我 运行 vendor/bin/phpstan analyse --configuration phpstan.neon source/modules/myvendor/mymodule
时,我总是得到 Class mynamespace\Article_parent not found
.
这可能是因为在Oxid中,eshop classes并没有被直接覆盖,而是这样声明的
<?php
namespace mynamespace;
class Article extends Article_parent
{
...
并且在 metadata.php
中定义了被覆盖的 class:
'extend' => [
\OxidEsales\Eshop\Application\Model\Article::class => \mynamespace\Article::class,
],
Phpstan 似乎无法解决这个问题,我尝试了很多不同的配置文件,比如这个
parameters:
level: max
inferPrivatePropertyTypeFromConstructor: true
autoload_files:
- vendor/oxid-esales/oxideshop-ce/source/oxfunctions.php
- vendor/oxid-esales/oxideshop-ce/source/overridablefunctions.php
或者这个
parameters:
level: 7
autoload_files:
- vendor/oxid-esales/testing-library/base.php
- vendor/oxid-esales/oxideshop-ce/source/oxfunctions.php
- vendor/autoload.php
但无济于事。 我怎样才能让 phpstan 工作?
请升级到最新的 PHPStan 版本 0.12.33。
在 0.12.26 版本中,this article 中描述了很多重做。主要的收获是,对于 class 显然存在而无需任何额外配置的元素,您不应该再得到“class 未找到”。
此外,autoload_files 已被弃用。请按照 Discovering Symbols 指南查看该怎么做(您很可能只需从配置中删除此部分)。
\mynamespace\Article_parent
class 不存在,将在运行时创建为别名。这是因为它取决于您的配置/此别名指向的其他安装模块。
我的同事 Alfred Bez 创建了 oxid-dump-autoload
工具,它将根据您当前的配置和设置转储模块链,以便 PHPStan / Psalm 可以找到 classes:
https://github.com/alfredbez/oxid-dump-autoload
希望能帮到你