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显示错误。
答案 0 :(得分:0)
Laravel无法确定应该注入哪个作为控制器构造函数的第一个参数,因为您没有该参数的类型提示。
如果$someOtherParam
是URL中应该包含的内容,那么您将能够在控制器的操作方法中注入给定路由指向的内容,但不能在构造函数中注入。