blockify / container
Blockify container package.
dev-main
2024-05-16 13:57 UTC
Requires
- psr/container: ^2.0@dev
This package is auto-updated.
Last update: 2024-12-16 15:08:10 UTC
README
Simple PHP dependency injection container with autowiring for WordPress plugins and themes.
Installation
composer require blockify/container
Usage
PHP
First, require Composer's autoloader and then register the container:
require_once __DIR__ . '/vendor/autoload.php'; namespace MyNamespace; use Blockify\Container\Container; use Blockify\Container\Registerable; $container = new Blockify\Container\Container(); $service_providers = [ MyServiceProvider::class => [ __FILE__ ], AnotherServiceProvider::class => [], ]; foreach ( $service_providers as $service_provider => $args ) { $instance = $container->make( $service_provider, ...$args ); if ( $instance instanceof Registerable ) { $instance->register(); } }
Dependencies will be automatically resolved and injected into the constructor:
namespace MyNamespace; class MyServiceProvider { private string $file; public function __construct( string $file ) { $this->dependency = $dependency; } public function getFile(): string { return $this->file; } } class AnotherServiceProvider implements Registerable { private MyServiceProvider $my_service_provider; public function __construct( MyServiceProvider $my_service_provider ) { $this->my_service_provider = $my_service_provider; } public function register() { echo $this->my_service_provider->getFile(); } }