svb / service-factory-bundle
Convenient way to automatically inject services into a factory without using sf service tagging.
Installs: 58 461
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 2
Type:symfony-bundle
Requires
- php: >7.1
- symfony/framework-bundle: >3.0.0
This package is auto-updated.
Last update: 2025-04-13 13:11:09 UTC
README
Using factories to orchestrate symfony services is usually accomplished by registering a service tag on the service and pass all services with that tag to the factory.
Since 3.4 we got this pretty little feature to ease the whole process of finding tagged services and injecting them into the factory, but it's still a bit too complicated to use this functionality.
To further improve this, we've decided to provide the AbstractServiceFactory (Factory) and the AbstractFactoryService (Service). To tell the symfony dependency injection which services inheriting AbstractFactoryService need to be added to which factories inheriting AbstractServiceFactory, all services must implement the getFactoryServiceId
method returning the corresponding factory FQCN.
Installing
Just run the composer require and composer does the rest!
php composer.phar require svb/service-factory-bundle
Example service
use SVB\ServiceFactoryBundle\FactoryServiceInterface; class TestService implements FactoryServiceInterface { public static function getFactoryServiceId(): string { return TestFactory::class; } }
Example factory
use SVB\ServiceFactoryBundle\AbstractServiceFactory; use SVB\ServiceFactoryBundle\FactoryServiceInterface; class TestFactory extends AbstractServiceFactory { /** * @return FactoryServiceInterface[] */ public function getAllServices(): array { /** * $this->services contains all FactoryServiceInterface inheriting * services that return the TestFactory FQCN on getFactoryServiceId */ return $this->services; } }
Continuous integration
Execute unit tests: ./phpunit --coverage-html coverage