Можно ли как-то теговать сервисы через implements interface?

Да, в Symfony есть возможность тегирования сервисов через implements interface. Тегирование сервисов - это механизм, который позволяет классифицировать сервисы по заданным критериям и связывать их с дополнительной функциональностью, предоставляемой определенными тегами.

Чтобы тегировать сервисы, соответствующие определенному интерфейсу, сначала нужно создать этот интерфейс. Интерфейс определяет сигнатуру методов, которые должны быть реализованы в классах, которые хотят использовать этот интерфейс.

interface MyInterface {
    // Декларация методов, которые нужно реализовать
}

Затем необходимо создать сервис и указать, что он реализует этот интерфейс в файле конфигурации сервисов (например, в файле services.yaml):

services:
    AppServiceMyService:
        class: AppServiceMyService
        tags:
            - { name: my_tagged_service, my_interface: MyInterface }

В этом примере класс MyService реализует интерфейс MyInterface. В секции tags задается тегирование сервиса с помощью ключа my_interface, который указывает на интерфейс, который сервис должен реализовывать.

Теперь вы можете получить все сервисы, тегированные с помощью определенного интерфейса, используя сервис-контейнер Symfony. Например, следующий код позволяет получить все сервисы, реализующие интерфейс MyInterface:

use SymfonyComponentDependencyInjectionContainerInterface;

/** @var ContainerInterface $container */

$myServices = $container->findTaggedServiceIds('my_tagged_service');
foreach ($myServices as $serviceId => $tags) {
    // Делайте что-то с сервисом
    $service = $container->get($serviceId);
    // ...
}

Вы можете выполнить дополнительные действия с полученными сервисами, такие как вызов определенных методов или связывание их с другой функциональностью вашего приложения.

Таким образом, вы можете использовать тегирование сервисов в Symfony, чтобы классифицировать и получать все сервисы, которые реализуют определенный интерфейс, для дальнейшей обработки и использования в вашем приложении. Он предоставляет гибкий способ управления сервисами и их функциональностью.