Laravel抽象类自动注射

时间:2017-10-05 10:39:25

标签: laravel-5 dependency-injection

Laravel auto会注入抽象类,但是当有另一个带抽象类的参数时,Laravel会忽略它,从而产生错误。

public interface PostRepository {
public function getPostById($id)
}
class EloquentPost implements PostRepository{

public function getPostById($id){

return Post::find($id);
} }

当我使用它时,它的工作正常:

class Controller PostController {
private $post;
public function __construct(PostRepository $post)
   $this->post = $post;
}

但是当我像

一样使用它时
class Controller PostController {
private $post;
public function __construct($someOtherParam, PostRepository $post)
   $this->post = $post;
}

然后Laravel显示错误。

1 个答案:

答案 0 :(得分:0)

Laravel无法确定应该注入哪个作为控制器构造函数的第一个参数,因为您没有该参数的类型提示。

如果$someOtherParam是URL中应该包含的内容,那么您将能够在控制器的操作方法中注入给定路由指向的内容,但不能在构造函数中注入。