php container/di
php concise container/di, (*1)
kos in packagist:https://packagist.org/packages/jesusslim/kos, (*2)
Install:, (*3)
composer require jesusslim/kos
get instance of kos\Container., (*4)
map a class or closure to container., (*5)
Container::getInstance()->map(Foo::class); Container::getInstance()->map('foo',Foo::class); Container::getInstance()->map('bar',function($foo,$bar){return $foo + $bar;});
map an instance to container., (*6)
Container::getInstance()->mapInstance('foo',new Foo());
if $key is mapped in container as an instance,return the instance;, (*7)
if $key is mapped in container as a class,return the an instance of the class;, (*8)
if $key is mapped in container as a closure,return the result of the closure;, (*9)
if $key is not mapped in container,reflect $key and return the instance/result;, (*10)
the values in $params can be used as the params of the constructor of class or the params of closure;, (*11)
class Foo{ private $bar; public function __construct($bar) { $this->bar = $bar; } public function getBar(){ return $this->bar; } } $container = Container::getInstance(); $container->map(Foo::class); $container->mapInstance('bar',677); $container->map('sum',function(Foo $foo,$inc){ return $foo->getBar()+$inc; }); $foo = $container->get(Foo::class); /* @var Foo $foo */ echo $foo->getBar(); //result is 677 $foo = $container->get(Foo::class,['bar' => 688]); echo $foo->getBar(); //result is 688; echo $container->get('sum',['inc' => 100]); //result is 777
invoke a closure , the params of the closure will be filled by the container., (*12)
echo $container->invoke(function(Foo $foo,$inc){ return $foo->getBar()+$inc; },['inc' => 100]); //result is 777
invoke a class->method , the params of the closure will be filled by the container., (*13)
echo $container->invokeClass(Foo::class,'getBar',[]); //result is 677
kos is a concise container/DI lib for simple use., (*14)
and pinject is a lib for the complex use,like caching instances,ArrayAccess implements and chaining operations/workflow with container., (*15)