首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找不到Phpstan Class_parent

找不到Phpstan Class_parent
EN

Stack Overflow用户
提问于 2020-07-22 23:54:25
回答 2查看 431关注 0票数 0

我正在尝试让静态PHP代码分析在我的Oxid6eShop上工作。

然而,当涉及到这一点时,我遇到了一个难题:

当我运行vendor/bin/phpstan analyse --configuration phpstan.neon source/modules/myvendor/mymodule时,我总是得到像Class mynamespace\Article_parent not found这样的错误。

这可能是因为在Oxid中,eshop类没有被直接覆盖,而是像这样声明

代码语言:javascript
复制
<?php
namespace mynamespace;

class Article extends Article_parent
{
...

metadata.php中,被覆盖的类被定义为:

代码语言:javascript
复制
'extend' => [
        \OxidEsales\Eshop\Application\Model\Article::class => \mynamespace\Article::class,
    ],

Phpstan似乎不能解决这个问题,我尝试了很多不同的配置文件,比如下面这个

代码语言:javascript
复制
parameters:
    level: max
    inferPrivatePropertyTypeFromConstructor: true
    autoload_files:
        - vendor/oxid-esales/oxideshop-ce/source/oxfunctions.php
        - vendor/oxid-esales/oxideshop-ce/source/overridablefunctions.php

或者是这个

代码语言:javascript
复制
parameters:
    level: 7
    autoload_files:
    - vendor/oxid-esales/testing-library/base.php
    - vendor/oxid-esales/oxideshop-ce/source/oxfunctions.php
    - vendor/autoload.php

但无济于事。怎样才能让phpstan正常工作呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-31 13:07:49

\mynamespace\Article_parent类不存在,将在运行时创建为别名。这是因为它取决于您的配置/此别名所指向的位置所安装的其他模块。

我的同事Alfred Bez创建了oxid-dump-autoload工具,它将根据您当前的配置和设置转储模块链,以便PHPStan / Psalm可以找到类:

https://github.com/alfredbez/oxid-dump-autoload

希望我能帮上忙

票数 1
EN

Stack Overflow用户

发布于 2020-07-23 01:34:57

请升级到最新的PHPStan版本0.12.33。

在版本0.12.26中,this article中描述的很多内容已经被修改过了。主要的结论是,对于明显存在而不需要任何额外配置的类,您不应该再得到"class not found“。

此外,autoload_files已被弃用。请按照Discovering Symbols指南查看要执行的操作(您很可能只需从配置中删除此部分)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63038312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档