【发布时间】:2017-12-29 19:45:44
【问题描述】:
在我的 symfony 项目中,我有两个包。 我的第一个包(Bundle1)是主包,第二个包(Bundle2)用于存储一些服务。
这是我的 service.yml (Bundle2):
services:
sc_ezpublish_helpers.generic_find:
class: SC\EzPublishHelpersBundle\Helper\GenericFindHelper
在 Bundle1 中,我使用这样的方式调用我的服务:
$findHelper = $this->get( 'sc_ezpublish_helpers.generic_find' );
清除缓存后出现此错误:
尝试从命名空间“SC\EzPublishHelpersBundle\Helper”加载类“GenericFindHelper”。 您是否忘记了另一个命名空间的“使用”语句?
堆栈跟踪
在 app/cache/dev/appDevDebugProjectContainer.php 第 20582 行 -
*/
protected function getScEzpublishHelpers_GenericFindService()
{
return $this->services['sc_ezpublish_helpers.generic_find'] = new \SC\EzPublishHelpersBundle\Helper\GenericFindHelper($this->get('ezpublish.signalslot.repository'), $this->get('ezpublish.config.resolver.core'));
}
/**
这是我在 composer.json 中的自动加载
"autoload": {
"psr-4": {
"": "src/"
},
"classmap": [ "app/AppKernel.php", "app/AppCache.php" ]
},
这是我的 Bundle2 结构
src/
├── SC
│ └── EzPublishHelpersBundle
│ ├── DependencyInjection
│ │ ├── Configuration.php
│ │ └── SCEzPublishHelpersExtension.php
│ ├── Helpers
│ │ └── GenericFindHelper.php
│ ├── Resources
│ │ └── config
│ │ └── services.yml
│ └── SCEzPublishHelpersBundle.php
你有什么想法吗?我是不是忘记了什么?
谢谢
【问题讨论】:
-
看起来像一个自动加载问题。您能否检查文件夹结构是否与命名空间匹配,并可能在此处从您的 composer.json 添加自动加载部分
-
我重命名了我的包,也许是因为这个?但是我到处搜索,如果我忘记了什么,我找不到......我用我的自动加载更新了我的消息
-
在这种情况下,请显示您的文件夹结构。该文件应位于
src/SC/EzPublishHelpersBundle/Helper/GenericHelper.php -
我添加了我的 Bundle2 结构。我删除了我的旧包(我重命名的那个)并重新创建了一个具有例外名称的新包。但我得到了同样的错误