Dependency injection container abstractions pulled from Flaphl elements.
composer require flaphl/injection
- PSR-11 Container compliance - Full compatibility with PSR Container interfaces
- Advanced dependency injection - Constructor injection, method injection, and property injection
- Service configuration - Multiple configuration formats (PHP, XML, Directory)
- Container compilation - Optimized container dumping and preloading
- Parameter management - Environment variable integration and parameter bags
- Contextual binding - Advanced service resolution with context awareness
- Comprehensive testing - 354 tests with 860 assertions ensuring reliability
use Flaphl\Element\Injection\ContainerBuilder;
// Create and configure container
$builder = new ContainerBuilder();
// Register services
$builder->register('service_id', MyService::class)
->addArgument('%parameter%')
->addMethodCall('setDependency', ['@dependency']);
// Set parameters
$builder->setParameter('parameter', 'value');
// Build container
$container = $builder->getContainer();
// Retrieve services
$service = $container->get('service_id');
// config/services.php
return [
'parameters' => [
'app.name' => 'My Application'
],
'services' => [
'my_service' => [
'class' => MyService::class,
'arguments' => ['%app.name%']
]
]
];
<!-- config/services.xml -->
<container>
<parameters>
<parameter key="app.name">My Application</parameter>
</parameters>
<services>
<service id="my_service" class="MyService">
<argument>%app.name%</argument>
</service>
</services>
</container>
- Container compilation for production optimization
- Service tagging for discovery and grouping
- Contextual binding for complex dependency resolution
- Parameter validation and type casting
- Environment variable integration
- Deprecation handling with migration paths
This library is released under the MIT License.