viloveul / container
Container of Viloveul. Just like service locator
v1.0.10
2019-05-01 06:06 UTC
Requires
- php: ~7.0
- psr/container: ^1.0
Requires (Dev)
- codeception/codeception: ^2.5
- viloveul/support: v1.*|v1.x-dev
README
Installation
make sure your php version > 7.0
composer require viloveul/container
How
require __DIR__ . '/vendor/autoload.php'; $container = Viloveul\Container\ContainerFactory::instance(); class YourClassA { public $name = 'Hello'; } class YourClassB { public $name = null; public function __construct(YourClassA $a) { $this->name = $a->name; } } $result = $container->make(YourClassB::class); var_dump($result);
or
require __DIR__ . '/vendor/autoload.php'; $container = new Viloveul\Container\Container(); interface EntityInterface { } class YourClassA implements EntityInterface { public $name = 'Hello'; } class YourClassB { public $name = null; public function __construct(EntityInterface $entity) { $this->name = $entity->name; } } $container->set(EntityInterface::class, YourClassA::class); $result = $container->make(YourClassB::class); var_dump($result); $entity = $container->get(EntityInterface::class); var_dump($entity); $container->set('world', function(EntityInterface $entity) { return new YourClassB($entity); }); $world = $container->get('world'); var_dump($world); $maybe = $container->invoke(function(EntityInterface $entity) { return $entity; }); var_dump($maybe);