matejicekvojtech/service-registry-bundle

Service registry bundle for Symfony services

Installs: 3

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

Type:symfony-bundle

pkg:composer/matejicekvojtech/service-registry-bundle

0.1.1 2025-09-22 14:05 UTC

This package is not auto-updated.

Last update: 2026-01-13 14:09:16 UTC


README

Allows Symfony developers to add services into service registry without any further configuration needed.

Instalation

composer require matejicekvojtech/service-registry-bundle
# config/bundles.php
<?php

return [
// ...
    \MV\ServiceRegistryBundle\ServiceRegistryBundle::class => ['all' => true],
];

Usage

In class to be put into registry add attribute with registry id and service priority in registry (higher number means higher priority)

<?php

namespace App;

use MV\ServiceRegistryBundle\Attribute\ServiceInRegistry;

#[ServiceInRegistry(registry: 'some_registry_id', priority: 10 /* default 0 */)]
class SomeClass implements SomeInterface {
/* ... */
}

or in DI container definition add tag:

services:
  App\SomeClass:
    tags:
      - { name: mv.service-in-registry, registry: some_registry_id, priority: 10 }

Service registry will be then available by service id mv.service-registry.<registry_id>, in example case mv.service-registry.some_registry_id

<?php
namespace App;

use MV\ServiceRegistryBundle\Registry\ServiceRegistryInterface;

class ClassUsingRegistry {
    /**
     * @param ServiceRegistryInterface<SomeInterface> $serviceRegistry
     */
    public function __construct(
        private ServiceRegistryInterface $serviceRegistry,
    )
    
    public function useAllFromRegistry(): void
    {
        foreach ($this->serviceRegistry->all() as $service) {
            /* some logic here */
        }
    }
    
    public function useCertainFromRegistry(): void
    {
        $service = $this->serviceRegistry->get(App\SomeClass::class);
        /* some logic here */
    }
}
services:
  App\ClassUsingRegistry:
    arguments:
      $serviceRegistry: '@mv.service-registry.some_registry_id'