在我的symfony项目中,我有两个捆绑包。 我的第一个包(Bundle1)是主包,第二个包(Bundle2)用于存储一些服务。
这是我的service.yml(Bundle2):
//Determine screen size
if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE) {
Toast.makeText(this, "Large screen", Toast.LENGTH_LONG).show();
}
else if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_NORMAL) {
Toast.makeText(this, "Normal sized screen", Toast.LENGTH_LONG).show();
}
else if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_SMALL) {
Toast.makeText(this, "Small sized screen", Toast.LENGTH_LONG).show();
}
else {
Toast.makeText(this, "Screen size is neither large, normal or small", Toast.LENGTH_LONG).show();
}
在Bundle1中,我使用这样的方式调用我的服务:
services:
sc_ezpublish_helpers.generic_find:
class: SC\EzPublishHelpersBundle\Helper\GenericFindHelper
清除缓存后出现此错误:
尝试从命名空间“SC \ EzPublishHelpersBundle \ Helper”加载类“GenericFindHelper”。 您是否忘记了另一个命名空间的“use”语句?
堆栈跟踪
在app / cache / dev / appDevDebugProjectContainer.php第20582行 -
$findHelper = $this->get( 'sc_ezpublish_helpers.generic_find' );
这是我在composer.json中的自动加载
*/
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'));
}
/**
这是我的Bundle2结构
"autoload": {
"psr-4": {
"": "src/"
},
"classmap": [ "app/AppKernel.php", "app/AppCache.php" ]
},
你知道吗?我忘记了什么吗?
由于
答案 0 :(得分:1)
目录名称和命名空间之间不匹配。在您的文件夹结构中,它被称为Helpers
(带有复数形式),在您的命名空间中,您使用Helper
。自动加载器使用文件夹名称来匹配类名,因此您必须在自动加载中指定此不匹配:
"autoload": {
"psr-4": {
"SC\\EzPublishHelpersBundle\\Helper\\": "src/SC/EzPublishHelpersBundle/Helpers/",
"": "src/"
}
}
或(可能更简单,更常见的方式)将文件夹重命名为Helper。
顺便说一句,类名也是如此。如果您的 GenericHelper
类位于文件GenericFindHelper.php
中,则自动加载器将无法将文件名与类名匹配。因此,如果保留名称和名称空间对您来说绝对重要,请重命名该文件或使用classmap-autoloader获取此特定文件。
编辑:我刚刚注意到错误的类名在我的回复中只是一个错字。在您的示例中,它匹配。