在 Laravel 中,使用 App::make('') 而不是构造函数注入有什么缺点吗?

2023-11-26

通常我只会通过构造函数注入依赖项,但是当父类具有依赖项并且必须将它们传递给所有子类时,它会变得非常冗长。

另一种方法是使用$this->dependancy = App::make('Dependancy')单独在父类中。那么父构造函数和子构造函数都可以为空。这样做有什么缺点吗?


您的方法有一个缺点,按照您的建议进行操作将使您的应用程序更难测试。

我的意思是,如果您尝试为父类编写单元测试,您将不再单独测试该父类。您的测试现在还取决于父类中声明的依赖项的结果。

如果您通过构造函数注入(或任何类型的注入)传递此依赖项,您可以控制该依赖项,并可以模拟/存根它的输出,并更好地单独测试您的父类。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Laravel 中,使用 App::make('') 而不是构造函数注入有什么缺点吗? 的相关文章

随机推荐

  • 如何将枚举值传递给 wcf webservice

    ksoap2 可以将枚举传递给 web 服务吗 有一个wcf网络服务 OperationContract string TestEnum CodeType code CodeType 是 dotnet 枚举 public enum Code
  • 通过单击按钮更改 viewpager 片段

    我试图通过单击按钮来更改 viewpager 片段 我有 5 个片段 每个片段都有自己的 xml 文件 frag1 xml frag2 xml 等 每个片段都有 5 个按钮 可以转到 viewpager 的其他页面 但问题是如何在 Frag
  • 无法通过 PuTTY 连接到亚马逊 EC2 实例

    我在 Amazon Web Services AWS 中创建了一个新的 Amazon EC2 实例 参考文档 我什至添加了这样的 SSH 规则 Port 22 Type SSH Source
  • Calendar.Month 给出错误的输出

    我一直在使用java util对于所有日期和日历表示 但我在这里面临一个奇怪的问题 Calendar MONTH Calendar DAY OF MONTH等都给出错误的输出 但是当我使用Calendar getTime 我得到了正确的输出
  • Go 中的 Marshall 映射到 XML

    我尝试将地图输出为 XML 数据 但收到以下错误 xml unsupported type map string int 编组映射对于 JSON 工作得很好 所以我不明白为什么它对于 XML 不能同样工作 使用 Struct 真的是唯一的方
  • Git - 删除 Blob

    有没有一种方法或命令可以使用 ID 从 git 中删除 blob 我使用了命令 git rev list objects all git cat file batch check objectname objecttype rest gre
  • Ember:如何将 TinyMCE 文本区域字段值绑定到模型

    我在模板中嵌入了 TinyMCE 现在 我想对 TinyMCE 编辑器 实际上是一个文本区域 的内容进行值绑定 See http jsfiddle net cyclomarc wtktK 10 在文本字段中输入文本时 bodyText 中的
  • 嵌入式 HSQLDB 将数据保存到文件中

    我正在创建一个基于 spring 的 Web 应用程序 该应用程序使用嵌入式 hsqldb 我的 spring 配置非常简单
  • Xamarin 在 Android 中形成 Shadow on Frame

    Xamarin Forms 中的 Frame 类非常有限 不允许我在 Frame 后面获得阴影 我使用以下代码为 iOS 制作了一个自定义渲染器 public class RatingInfoFrameRenderer FrameRende
  • Azure Blob 存储的事务访问

    我想将文件存储在 Azure Blob 存储中 到目前为止 一切都很好 我还想存储有关该文件的附加元数据 为此 我使用 Azure SQL 数据库 因此我可以轻松查询 Blob 存储上的文件 因此 当我向存储添加新文件时 我想确保 blob
  • 单行嵌套 For 循环[重复]

    这个问题在这里已经有答案了 用Python编写这个转置矩阵的函数 def transpose m height len m width len m 0 return m i j for i in range 0 height for j i
  • 设计问题:电话拨打电话号码,还是电话号码在电话上拨打自己?

    这是从我在 DDD Yahoo 上发布的内容重新发布的 团体 在所有条件相同的情况下 您是写phone dial phoneNumber 还是phoneNumber dialOn phone 请记住未来可能的需求 除了电话号码之外的帐号 除
  • 密码中是否应该允许使用空格字符?

    我尝试过不同的网站 产品 这似乎分配得相当均匀 Windows 7 和 Gmail 允许您在密码中插入空格 Hotmail 和 Twitter 则不然 虽然在密码中允许空格会增加密码的复杂性 但似乎许多网站 程序不允许它们 是否有充分的理由
  • 如何在 SPSS 中循环变量?我想避免代码重复

    是否有 原生 SPSS 方法来循环某些变量名称 我想做的就是获取变量列表 我定义的 并为它们运行相同的过程 伪代码 这不是一个很好的例子 但很能说明问题 for i in varlist a b c do FREQUENCIES VARIA
  • CLI/C++ 到底是什么?它与“普通”c++ 有什么不同?

    首先让我澄清一下 普通 C 的含义 我目前正在阅读 Walter Savitch 的 C 中的问题解决 据我所知 这不是专门为 Microsoft 或 Unix 编写的 所以我的问题是 我在这本书中学到的内容 我用它来获取 C 的通用知识
  • 旋转下拉列表在滚动时跳跃

    为什么我的旋转器在滚动时会跳跃 我只是做以下事情 ArrayAdapter
  • 为什么可以等待 Rx observable? [复制]

    这个问题在这里已经有答案了 我刚刚注意到await关键字可以与 Rx Observable 一起使用 例如 await Observable Interval TimeSpan FromHours 1 我非常确定它只能与任务结合使用 那么是
  • 如何刷新数据网格

    我创建 dojox grid datagrid 并填充数组中的内容 如示例所示页面上的最后一个示例 在一段时间内 我在代码中更改了该数组的值 如何刷新该网格的内容 如何从更改的数组加载新数据 要更改网格中的值 您需要更改网格存储中的值 网格
  • 找到到任何子串的最小汉明距离的最快方法?

    给定一个长字符串L和一个较短的字符串S 约束条件是L length 必须 gt S length 我想找到之间的最小汉明距离S和任意子串L长度等于S 长度 让我们为此调用该函数minHamming 例如 minHamming ABCDEFG
  • 在 Laravel 中,使用 App::make('') 而不是构造函数注入有什么缺点吗?

    通常我只会通过构造函数注入依赖项 但是当父类具有依赖项并且必须将它们传递给所有子类时 它会变得非常冗长 另一种方法是使用 this gt dependancy App make Dependancy 单独在父类中 那么父构造函数和子构造函数