Skip to content

ytake/proto-container

Repository files navigation

Prototype.Container(develop)

Build Status Coverage Status Scrutinizer Code Quality Dependency Status Iono.Container

SensioLabsInsight

easy dependency injection / service container
for >=php5.4

and lightweight Compiler..

usage

container instance

$this->container = new \Iono\Container\Container;

for concrete & abstract class

/**
 * Interface ResolveInterface
 */
interface ResolveInterface
{
    public function getInstance();
    
}

/**
 * Class ResolveClass
 */
class ResolveClass implements ResolveInterface
{
    protected $value;
    
    public function getInstance()
    {
        return $this;
    }
    public function setValue($value)
    {
        $this->value = $value;
    }
    public function getValue()
    {
        return $this->value;
    }
}

concrete & abstract bindings(prototype)

$this->container->binder("ResolveInterface", "ResolveClass");
$instance = $this->container->newInstance("ResolveInterface");

singleton

$this->container->singleton("ResolveInterface", "ResolveClass");
$instance = $this->container->newInstance("ResolveInterface");

service locator

for string

$context = $this->container->newInstance("iono.container.tests");

for object

$this->container->binder("std.class", new \stdClass());
$context = $this->container->newInstance("std.class");

closure

$this->container->binder("closure", function () {
    return new \stdClass();
});
$this->container->newInstance('closure');

bindings & parameters

$this->container->setParameters("ResolveConstructor", ["arg" => "dependency2"]);
$this->container->binder("ResolveInterface", "ResolveClass");
$class = $this->container->newInstance("ResolveConstructor");

parameters override

$class = $this->container->newInstance("ResolveConstructor", ["arg" => "dependency3"]);
//
$class = $this->container->newInstance("ResolveConstructor", ["arg" => $this->container->newInstance("stdclass")]);

qualifier

contextual binding

// bind to same interface
$this->container->register("ResolveInterface", "Class1")->component('class1');
$this->container->register("ResolveInterface", 'Class2')->component('class2');

$this->container->qualifier('class1');
$this->container->qualifier('class2');

About

php service container (prototype)

Resources

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

 

Packages

No packages published

Languages