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


Loop through dependencies array and inject them

我有一个数组,$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
    }
}

尝试对每个依赖项进行递归调用。每个依赖项本身都可以有需要"构建"的依赖项:

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

就传递给对象的构造函数而言,这里不要依赖new。相反,请使用如下答案所述的反射:

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

在你的例子中,这将是:

return $class->newInstanceArgs($dependencies);