Skip to content

Latest commit

 

History

History
73 lines (55 loc) · 1.7 KB

README.md

File metadata and controls

73 lines (55 loc) · 1.7 KB

Sofia

Simple and Small Dependency Injector

 class SimpleClass {
    private $string;
    private $number;
    private $boolean;

    public function __construct($string, $number, $boolean) {
        $this->string = $string;
        $this->number = $number;
        $this->boolean = $boolean;
    }

    public function getString() {
        return $this->string;
    }

    public function getNumber() {
        return $this->number;
    }

    public function getBool() {
        return $this->boolean;
    }    
}

class MethodFactoryClass {
    public static function getInstance() {
        return new static();
    }
}

class ComposedClass {
    private $simpleClass;
    private $methodFactory;

    public function __construct(SimpleClass $simpleClass, MethodFactoryClass $methodFactoryClass) {
        $this->simpleClass = $simpleClass;
        $this->methodFacotry = $methodFactoryClass;
    }

    public function getSimpleClass() {
        return $this->simpleClass;
    }

    public function getMethodFactoryClass() {
        return $this->methodFactory;
    }
}



$container = new SimpleContainer();
$container->register("simpleClass","SimpleClass");
$container->register("methodFactory","MethodFactoryClass", "getInstance");
$container->register("composedClass", "ComposedClass");

$container->injectString("simpleClass", "String Value");
$container->injectNumber("simpleClass", 100);
$container->injectBoolean("simpleClass", true);

$container->injectObject("composedClass", "simpleClass");
$container->injectObject("composedClass", "methodFactory");

$simpleClass = $container->get("simpleClass");
$methodFactory = $container->get("methodFactory");
$composedObject = $container->get("composedClass");