У меня есть базовая абстрактная служба, которая зависит от запроса от контейнера инъекции зависимостей. Вот его определение:Symfony2 наследует родительскую службу странное поведение
services:
acme.controller.abstract.basic:
class: "Acme\CommonBundle\Controller\AbstractBasicController"
abstract: true
calls:
- [setRequest, ["@request"]]
Поскольку это определение сервиса требует объема запроса, я изменю свое определение этому:
services:
acme.controller.abstract.basic:
class: "Acme\CommonBundle\Controller\AbstractBasicController"
abstract: true
scope: request
calls:
- [setRequest, ["@request"]]
Теперь я наследовать это определение службы в конкретную службу в следующем:
services:
acme.controller.website:
class: "Acme\WebsiteBundle\Controller\WebsiteController"
parent: "acme.controller.abstract.basic"
Но я получаю исключение, говоря, что acme.controller.website
имеет более широкий охват, чем объект запроса. Чтобы исправить это, мне нужно добавить scope: request
к моему конкретному сервису. Но я бы подумал, что определение области было бы унаследовано от базовой абстрактной службы, поэтому нет необходимости повторно добавлять параметр scope
в мою дочернюю службу.
Является ли предполагаемым поведением запретить наследование параметра scope
? Если да, может быть, вы знаете причину, по которой это невозможно реализовать?
Спасибо за рытье. Для полноты, [здесь проблема] (https://github.com/symfony/symfony/issues/4620) о отслеживании проблемы github Symfony2 об этой точной проблеме. Upvote, но соглашусь только тогда, когда у меня есть ответ, почему :) – Matt
У меня была одна и та же проблема, поэтому я должен был понять ради меня. Тем временем я нашел ваш пост, поэтому разместил здесь, что может помочь кому-то :) – Venu