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
Requires
- php: ^8
- symfony/dependency-injection: ^6.0 || ^7.0
- symfony/http-kernel: ^6.0 || ^7.0
Requires (Dev)
- phpstan/phpstan: ^1.11
- roave/security-advisories: dev-latest
- symfony/framework-bundle: ^6.0 || ^7.0
- vimeo/psalm: *
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'