thecodingmachine / common-factories
This project provides utility factories that can be used directly in service providers complying with the container-interop/service-provider standard.
Installs: 189 140
Dependents: 9
Suggesters: 0
Security: 0
Stars: 1
Watchers: 3
Forks: 1
Open Issues: 0
Requires
- php: >=5.4
- container-interop/service-provider: ^0.4
- psr/container: ^1.0
Requires (Dev)
- mouf/picotainer: ^1.0
- phpunit/phpunit: ^4.5
- satooshi/php-coveralls: ^1.0
This package is auto-updated.
Last update: 2024-10-06 23:41:27 UTC
README
Utility factories for container-interop/service-provider
Work in progress.
This project is part of the container-interop group. It tries to find a solution for cross-framework modules (aka bundles) by the means of container-agnostic configuration.
Goal of this project
This project provides utility factories that can be used directly in service providers complying with the container-interop/service-provider standard.
Those common factories can be detected by compiled/cached containers. The aim of this package is to offer a common set of useful classes that can also be preprocessed by optimized containers for best performance.
Usage
Simply require this package in your package declaring your service-provider:
So far, the package has the thecodingmachine vendor name. It will hopefully be migrated to container-interop/common-factories
composer require thecodingmachine/common-factories
Then, you can use one of the 3 available classes:
Creating an alias
Use the Alias
class to easily create an alias.
public function getFactories() { return [ 'myAlias' => new Alias('myService') ] }
can easily replace:
public function getFactories() { return [ 'myAlias' => function(ContainerInterface $container) { return $container->get('myService'); } ] }
Creating a parameter
Use the Parameter
class to put in the container a scalar (or array of scalar) entry:
public function getFactories() { return [ 'DB_HOST' => new Parameter('localhost') ] }
can easily replace:
public function getFactories() { return [ 'DB_HOST' => function() { return 'localhost'; } ] }
Appending a service to an array of services
Use the AddToArray
class to push a new service to an existing array:
public function getExtensions() { return [ MyTwigExtension::class => function() { return new MyTwigExtension(); }, 'twig.extensions' => new AddToArray(MyTwigExtension::class) ] }
can easily replace:
public function getExtensions() { return [ MyTwigExtension::class => function() { return new MyTwigExtension(); }, 'twig.extensions' => function(ContainerInterface $container, array $extensions = []) { $extensions[] = $container->get(MyTwigExtension::class); return $extensions; } ] }