タイプヒンティング・インジェクションの履歴

引数のタイプヒンティングで型を取得して、インジェクションする。

最初にInjectorの設定すればタイプヒンティング入れるだけなので、まぁ便利かも。

<?php
class TypeHintingInjector{
    private $objects;
    private $methodName;
    function __construct($methodName, $objects){
        $this->methodName = $methodName;
        $this->objects = $objects;
    }
    function inject($injectee){
        $refClass = new ReflectionClass($injectee);
        if (!$refClass->hasMethod($this->methodName)){
            return;
        }
        $method = $refClass->getMethod($this->methodName);
        $params = $method->getParameters();
        $args = array();
        foreach ($params as $param){
            $paramClass = $param->getClass();
            $args[] = $this->getObject($paramClass->getName());
        }
        return $method->invokeArgs($injectee, $args);
    }
}
?>