如果我键入提示所需的类/接口,Laravel 5提供自动依赖解析。但他们应该如何实例化呢?例如:
public function __construct(Dependency $dependency) {
$this->dependency = $dependency;
}
然后,在另一种方法中,我想创建两个实例,如下所示:
$one = new Dependency(1);
$two = new Dependency(2);
最灵活,最友好的测试方式是什么?
答案 0 :(得分:1)
请原谅我可怜的笑话,但这取决于。
看起来你误解了依赖性解决了一点点。 在您的示例中,属性“dependency”allready包含一个实例化对象。如果在另一个方法中需要两个不同的实例,则可以在那里实例化它们,注入容器或使用工厂。这取决于你的需求。
对laravel依赖解析的简短介绍
laravel中的自动依赖关系由service container提供,它用于传递(allready)实例化对象。必须将已解析的对象绑定到服务容器。最好的方法是通过service providers。在服务提供商的注册方法中,您可以进行绑定
$this->app->bind('Dependency', function ($app) {
return new Dependency();
});
在此示例中,容器每次调用时都将返回一个新实例。
如果每次绑定单个单元时需要相同的实例
$this->app->singleton('Dependency', function ($app) {
return new Dependency();
});