我正在开发一个小型Web应用程序,它将拥有一个私人消息系统。当用户签名时,他接收或写入的消息将显示在下拉菜单中的工具栏区域中。没什么新的: - )
当用户浏览页面时,工具栏将在大多数时间显示。因此,不是将收件箱实现注入到可能通过routes.php调用的每个控制器中,而是考虑使用新的刀片函数@inject。
这看起来像这样(抽象)
但我不确定这是否是一个不错的设计模式,因为我对一般的依赖注入相对较新。我很欣赏一些。
答案 0 :(得分:0)
这里有两件事我不对。
1)Laravel的@Inject视图指令实际上并没有进行任何类型的依赖注入"尽管它的名字暗示如此。它实际上是使用服务位置,这种模式被广泛认为是反模式的。
基本上,通过@Inject,视图可以访问容器中的任何内容。它可以获得它想要的任何东西。它没有被告知应该有什么。这是依赖注入和服务位置之间的主要区别。
2)直接将视图注入视图无疑意味着您为应用程序添加了更多复杂性,因为您已经添加了更多将 服务注入模板的位置。虽然它可能使事情看起来更快更简单,但是长期来看会使事情变得更加困难。
3)如果您的视图中发生了这种情况,您将如何测试如何获取和控制数据?您可能不得不使用功能测试,虽然这不是一件坏事,但仍然不会像单元测试那样有用。
我建议坚持通常关于DI的事情,并实际使用DI。