首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >警告:模糊类解析原则

警告:模糊类解析原则
EN

Stack Overflow用户
提问于 2018-01-09 17:04:09
回答 2查看 2.2K关注 0票数 4

在运行composer更新之后,我一直有以下错误:

警告:类解析不明确,"Doctrine\ORM\Persisters\Entity\BasicEntityPersister“在"$baseDir . '/engine/Library/Doctrine/ORM/Persisters/Entity/BasicEntityPersister.php”“和”"/var/www/html/shop5/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/Entity/BasicEntityPersister.php",“中都会使用。警告:不明确的类解析,“Doctrine\Common”同时出现在“'/engine/Library/Doctrine/Common/Proxy/AbstractProxyFactory.php”.$baseDir“和”"/var/www/html/shop5/vendor/doctrine/common/lib/Doctrine/Common/Proxy/AbstractProxyFactory.php",“--第一个将被使用。

我尝试过运行以下命令,但这些命令都没有工作:

代码语言:javascript
复制
composer dump-autoload -o
composer clearcache

知道怎么解决这个问题吗?谢谢

shopware5 - php7.0

EN

回答 2

Stack Overflow用户

发布于 2018-01-12 12:21:36

这是Shopware的正常行为。

Doctrine库经常使用final class语句,为了使它与Shopware属性系统一起工作,类被通过编写器自动替换。您可以在shopware/engine/Library/Doctrine/Common中找到已更改的文件

FYI:这就是为什么Shopware只在优化作曲家自动加载时才能工作的原因。

作曲家转储-自选-优化

否则,您将遇到来自无效或错误实体的随机错误。

票数 3
EN

Stack Overflow用户

发布于 2018-04-25 11:58:49

为了消除这些警告,您应该在exclude-from-classmap中添加带有模糊类的文件。

代码语言:javascript
复制
"autoload": {
    ...
    "exclude-from-classmap": [
        ...
        "vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/Entity/BasicEntityPersister.php",
        "vendor/doctrine/common/lib/Doctrine/Common/Proxy/AbstractProxyFactory.php"
    ]
},

然后dump-autoload将忽略这些文件。

这就是为什么Shopware只在优化作曲家自动加载时才能工作的原因。

我没有研究在Shopware中是如何做到这一点的,但这也是可以修复/改进的。对于composer来说,名称空间的更精确的定义有优先权。所以如果你的自传里有这个:

代码语言:javascript
复制
"autoload": {
    "psr-0": { 
        "somevendor\\somepackage\\": "vendor/somevendor/somepackage/",
        "somevendor\\somepackage\\db\\": "overrides/somevendor/somepackage/db/"
    }
},

如果您请求somevendor\somepackage\db\Entity类,那么编写器将首先在overrides/somevendor/somepackage/db/Entity.php中搜索,只有当它找不到它时,它才会尝试vendor/somevendor/somepackage/db/Entity.php。这是因为somevendor\somepackage\db命名空间的定义比somevendor\somepackage更精确。

因此,如果您想以这种方式覆盖第三方类,您应该定义比第三方库更精确的名称空间。

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

https://stackoverflow.com/questions/48173258

复制
相关文章

相似问题

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