循环遍历依赖项数组并注入它们

时间:2014-05-27 20:13:57

标签: php

我有一个数组$dependencies,包含所有依赖项对象。

在最后一行,我返回实例化的对象。

如何注入我在数组中的所有依赖项对象?

class IoC
{
    public static function make($object)
    {
        $class  = new ReflectionClass($object);
        $params = $class->getConstructor()->getParameters();

        foreach ($params as $param) {
            $dependency     = $param->getClass()->name;
            $dependencies[] = new $this->make($dependency);
        }

        $name = $class->getName();

        return new $name(); //todo
    }
}

1 个答案:

答案 0 :(得分:0)

尝试为每个依赖项进行递归调用。每个依赖项本身都具有需要构建的依赖项':

foreach ($params as $param) {
    $dependency     = $param->getClass()->name;
    $dependencies[] = $this->make('dependency');
}

只要将它们传递给对象的构造函数,就不要在这里依赖new。相反,请使用this answer中详述的反射:

$reflection = new ReflectionClass( 'yourClassName' );
$instance = $reflection->newInstanceArgs( $dependencies );

在你的情况下,这将是:

return $class->newInstanceArgs($dependencies);