2017-04-08 7 views
-1

정확하게 App \ Service에서 src 외부의 서비스를 정의하려고합니다. 나는 Symfony에서의 서비스가 단지 클래스라는 것을 알기 때문에 어디서나 그것을 넣을 수 있어야합니다. 나는 순간에있어 무엇Symfony3 - src/bundle 외부 서비스 정의

:

응용 프로그램 \ 설정 \ 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에 있다면이 게시물을 가르쳐주세요.

미리 감사드립니다.

+1

에게 도움 그것은 당신이 파일'SerializeService.php'이 자동로드에 등록되지 않은 장소 위치 보인다 바랍니다. –

+0

@PigBall 좋은 콜! 고맙습니다. 난 그냥 작곡가 자동로드에 추가했다 - 바보 같은 실수. – Robert

답변

1

Pib Ball이 오토로더가 일부 정보가 누락되었다고 말했습니다.

나는 다음과 같은 설정 내가 코드를 사용한

myProjectRoot/ 
    app/ 
     config/ 
     Resources/ 
     Service/ 
      SerializeService.php <- your service file 

, 아니 변화를 시도했습니다. 당신이, 그때

................ 
"autoload": { 
    "psr-4": { 
     "": "src/", 
     "App\\": "app/", 
    } 
}, 

그런 다음 명령 composer update을 실행 한 후 서비스가로드해야 다음과 같은 내 composer.json을 편집 한으로

나는 같은 오류가 있습니다.

은 수도 당신

+0

안녕하세요. Pig Ball이 자신의 의견을 쓴 직후 바로 그 일을 한 것처럼 보였습니다. – Robert