我正在尝试在src之外定义服务,确切地说是在App \ Service中。我知道Symfony中的服务只是一个类,因此我应该可以把它放在任何地方。
这就是我现在所拥有的:
parameters:
serializer_service_class: App\Service\SerializeService
services:
app.serializer:
class: '%serializer_service_class%'
autowire: true
服务只是一个简单的序列化类:
<?php
namespace App\Service;
use Symfony\Component\Serializer\Encoder\JsonEncoder;
use Symfony\Component\Serializer\Encoder\XmlEncoder;
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
use Symfony\Component\Serializer\Serializer;
/**
* Class SerializeService
* @package App\Service
*/
class SerializeService
{
/**
* @var Serializer
*/
private $serializer;
/**
* @var array
*/
private $encoders;
/**
* @var array
*/
private $normalizer;
/**
* SerializeService constructor.
*/
public function __construct()
{
$this->encoders = array(new XmlEncoder(), new JsonEncoder());
$this->normalizer = new ObjectNormalizer();
$this->normalizer->setCircularReferenceHandler(function ($object) {
return $object->getId();
});
$this->serializer = new Serializer($this->normalizer, $this->encoders);
}
public function serialize2Json($item)
{
return $this->serializer->serialize($item, 'json');
}
}
然后我收到此错误消息:
Attempted to load class "SerializeService" from namespace "App\Service".
Did you forget a "use" statement for another namespace?
我真的试图找到解决方案,我尝试了不同的选择。如果它在stackoverflow上的某个地方,请指向我的帖子。
提前致谢。
答案 0 :(得分:1)
正如Pib Ball所说,您的自动加载器可能缺少一些信息。
我已尝试过以下设置
myProjectRoot/
app/
config/
Resources/
Service/
SerializeService.php <- your service file
我使用过您的代码,没有任何更改。
我和你有同样的错误,然后我编辑了我的composer.json,如下所示
................
"autoload": {
"psr-4": {
"": "src/",
"App\\": "app/",
}
},
然后执行命令composer update
,然后加载您的服务。
希望它可以帮到你