首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Laravel 5.1 >在视图中使用@inject显示内容

Laravel 5.1 >在视图中使用@inject显示内容
EN

Stack Overflow用户
提问于 2015-06-20 20:56:18
回答 1查看 928关注 0票数 3

我正在开发一个小型的Web应用程序,它将拥有一个私有的消息系统。当用户在其接收或书面消息中签名时,将显示在下拉菜单中的工具栏区域中。无新意:-)

当用户在页面中浏览时,工具栏将在大部分时间显示。因此,与其将收件箱实现注入到可能通过routes.php调用的每个控制器中,我正在考虑使用新的刀片函数@inject。

这个看起来像(抽象的)

  1. 工具栏视图通过@inject调用ControllerMethod
  2. ControllerMethod调用注入的InterfaceMethod (基于构造函数的注入)
  3. 服务容器服务实现
  4. ImplementationMethod返回收件箱

但我不确定这是否是一个好的设计模式,因为我是相对较新的依赖注入一般。我会很感激的。

EN

Stack Overflow用户

发布于 2015-06-20 21:06:23

这里有两件事我错了。

1) Laravel的@Injection指令实际上并不执行任何类型的“依赖注入”,尽管它的名称表明是这样的。它实际上是使用服务定位,这是一种被广泛认为是反模式的模式.

基本上,通过@Inject,视图可以访问容器中的任何内容。它可以得到它想要的任何东西。它没有被告知它应该拥有什么。这就是依赖注入和服务位置之间的主要区别。

2)将服务直接注入视图无疑意味着您正在为您的应用程序增加更多的复杂性,因为可以将更多的服务注入到您的模板中。虽然这可能会使事情变得更快、更简单,但从短期来看,长期而言,它将使事情更难以处理。

3)如果发生在您的视图中,您将如何测试如何获取和控制数据?您可能需要使用功能测试,虽然这并不是一件坏事,但对于这样的事情,它仍然不会像单元测试那样有用。

我建议坚持对DI通常是如何做的,并实际使用DI。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30958796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档