私はApp \ Serviceのsrcの外でサービスを正確に定義しようとしています。 Symfonyのサービスは単なるクラスなので、どこにでも置くことができるはずです。私は現時点で持っているものだsymfony3 - src/bundle以外のサービスを定義する
:
アプリ\ CONFIG \ services.yml
parameters:
serializer_service_class: App\Service\SerializeService
services:
app.serializer:
class: '%serializer_service_class%'
autowire: true
サービスは、単純なシリアル化クラスです:
SerializeService.php
<?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しているなら、この投稿に私を指摘してください。
ありがとうございます。
ファイルを置く場所は、 'SerializeService.php'が自動ロードに登録されていないようです。 –
@PigBallよろしくお願いします!どうもありがとうございました。私はちょうど作曲家の自動ロードに追加する必要があった - ばかな過ち。 – Robert