2017-10-05 67 views
0

Laravel自动注入抽象类,但是当抽象类有另一个参数时,Laravel会忽略它,因此会出错。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

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

如果$someOtherParam应该出现在URL中,您将能够在控制器的action方法中注入给定路由点的注入,但不在构造函数中注入。