Я попытался создать интерфейс для создания служб с тегами, которые можно внедрить в другой сервис, основываясь на документации здесь https://symfony.com/doc/3.4/service_container/tags.html
Я создал интерфейс, подобный
namespace AppBundle\Model;
interface PurgeInterface {
//put your code here
public function purge ();
}
, поместивопределение в service.yml:
_instanceof:
AppBundle\Model\PurgeInterface:
tags: ['app.purge']
и создание сервисов на этом интерфейсе.Отладка консоли: контейнер показывает мои службы как правильно помеченные.
Я создал другую службу, которая должна работать с помеченными службами, но это не работает.
services.yml:
purge_manager:
class: AppBundle\Service\PurgeManager
arguments: [!tagged app.purge]
Служба выглядит следующим образом:
namespace AppBundle\Service;
use AppBundle\Model\PurgeInterface;
class PurgeManager {
public function __construct(iterable $purgers) {
dump($purgers);
}
}
Если я проверю это, я получу:
Type error: Too few arguments to function AppBundle\Service\PurgeManager::__construct(), 0 passed in /.....Controller.php on line 21 and exactly 1 expected
Я не пытался создать пропуск компилятора, потому что я просто хочу понять, почемуэто не работает, как следует на основании документации
Заранее спасибо
Себастьян