laravel的依赖注入问题

网络小白
  • 268

laravel在controller中注册service或者repository目录下的类时,有两个疑问

  1. 如果repository目录下,有一个接口,其他类都实现这个接口

那么在controller的构造函数中的参数类型如果是repository下的这个接口,那真正运行起来的话,laravel的容器根据类型提示貌似也无法知道具体用哪个类吧?

  1. 还有就是,laravel容器如何根据类型找到具体类的,因为我这个类并没有通过绑定的方式注入到容器中啊? 还没有注入肯定取不到啊
回复
阅读 664
1 个回答

1,一个接口对应多个实现并不符合对于依赖注入的类型提示,如果要面向接口开发,你应当一个类对应一个接口,然后在容器中把接口和类绑定起来,这样需要进行注入时容器就能注入绑定的类
2,当你作为方法签名的方式进行依赖注入时,实际还是走的容器的注入,在容器没有找到绑定关系时就会把其参数类型直接当作为一个类进行处理后实例化。所以当你传入一个有效的类名称时,即使在之前没有绑定,也可以进行进行注入。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏