底层控制反转,类型提示构造函数自动创建实例


Laravel inversion of control , Type hinting constructor causes creation of instance automatically

class FooBar {
    public function __construct(Baz $baz)
    {
        $this->baz = $baz;
    }
}
$fooBar = App::make('FooBar');
在上面的例子中,Baz类的实例是自动创建的。有谁能举例说明在laravel之外如何做到这一点(如何做到的)?从我的阅读中,我理解这是通过反射完成的,谁能实际展示一下吗?

这个特殊的情况相对简单。您似乎正在查看Laravel 4.2 IoC容器文档,所以请查看Laravel 4.2源代码。

App::make被调用时,Laravel随后调用build。它使用PHP的ReflectionClass来检查给定类的构造函数。如果构造函数不接受参数,它只是创建一个类的新实例并返回它。如果构造函数接受参数,则容器递归地创建每个参数的新实例(使用相同的过程),直到它们全部创建完成,然后使用这些新实例创建类的新实例并返回它。