2017-11-30 3 views
2

Symfony 버전을 업그레이드 할 예정이므로 모든 사용 중단을 제거하고 싶습니다. 마지막 두 가지 오류를 제거하는 방법을 알아낼 수 없습니다.Symfony 3.3 - 내 가상 사용 중단 Guzzle

하나는

Autowiring services based on the types they implement is deprecated since Symfony 3.3 and won't be supported in version 4.0. You should rename (or alias) the "eight_points_guzzle.client.trigger_api" service to "GuzzleHttp\ClientInterface" instead. 

입니다하지만 내 serivce에서, 나는 이미 어떤이 (가) 작성하는 것은 제 의뢰인과 목구멍 클라이언트입니다

public function __construct(
    LoggerInterface $logger, 
    EntityManagerInterface $em, 
    ClientInterface $client 
) { 

    $this->em = $em; 

    $this->logger = $logger; 

    $this->rest = $client; 

} 

를 주입하기 위해 클라이언트 인터페이스를 사용 (config.yml에서 구성) eight_points_guzzle.client .trigger_api

이 번들을 사용하고 있습니다 : https://github.com/8p/EightPointsGuzzleBundle

어떻게 해결할 수 있습니까?

는 인사말 토끼, 사전에 감사

+0

최신 버전의 GuzzleBundle을 사용하고 있는지 확인하십시오. AppKernel에서 guzzle 번들 플러그인을 사용하고 있습니까? 문제가있을 수 있습니다. – Cerad

+0

안녕하세요, "버전"을 사용하고 있습니다 : "v7.2.1", 사용 가능한 최신 버전입니다. 나는 그놈에게 어떤 플러그인도 사용하지 않는다. – WhiteRabbit

+0

메시지가 제안하는 것을 시도하고 services.yml 파일에 별칭을 추가 할 수 있습니다. trigger_api 서비스 ID는 번들에 의해 생성되므로 혼란스럽지 않습니다. autowire가 불평하지 않도록 서비스를 수동으로 정의 할 수도 있습니다. – Cerad

답변

2

짧은 답변 :이 YAML에 형식입니다

services: 
    GuzzleHttp\ClientInterface: "@eight_points_guzzle.client.trigger_api" 

참고 경우 : 응용 프로그램의 당신의 services.yml에 다음 줄을 추가 다른 것을 사용하고 그에 따라 조정하십시오.

긴 대답 : Autowiring은 심포니 Autowiring documentation 변경되었습니다 서비스 의존성 등 ClientInterface의 $ 클라이언트을 가지고 있으며,이 종속성이 심포니에 의해 autowire가된다. symfony는이 유형을 자동 바꾸기 위해 사용되었지만, 이것은 사용되지 않습니다. 이제 인젝션 할 리소스의 이름과 별칭으로 인터페이스가있는 서비스를 정의해야합니다.

+0

잘 작동했습니다. 나는 다른 방법으로 같은 말을 고칠 수 있었다. 비록 그것이 어떻게 작동하는지 완전히 확신하지는 않지만. symfony 3.3 이후로 서비스 자체 대신 인터페이스를 삽입해야한다고 생각했습니다 : - / – WhiteRabbit

관련 문제