关于Laravel外墙的两个小问题

时间:2015-09-26 22:17:17

标签: laravel laravel-5.1

我知道这是一个有很多争论的问题,但有两个方面,我没有看到太多参考,并想知道答案:

  1. 我们一直在使用静态函数 - 我确信没有人会停止使用dd()帮助器,但很明显甚至是纯粹的PHP静态函数,如json_encode()或{{1} }。为什么将Facade背后的array()类视为类似的辅助函数而不是类依赖关系是否有意义?
  2. 更重要的是,很多时候我们在方法内部的狭窄控制流(或条件)中使用那些laravel,而类\方法确实不一定总是依赖于那些帮助者(例如用户类仅在用户通过身份验证等时使用。)

    1. 在对这场辩论的回应中,泰勒·奥特威尔本人说,使用外墙可能会导致dependencies意味着我们可能会想要编写太多而没有将它们分开的课程\方法 - 但我不喜欢了解如何使用外墙而不是在承包商或方法中注入所有这些类别在责任方面是不同的 - 从我理解的只是你在“声明”那些类的地方的变化 - 在方法签名中或在其中(我理解)这有很多不同之处,但没有看到一个在课堂上的责任问题)。有人可以解释一下吗?
    2. 底线我问的是,因为很明显,当他们担任助手而不是作为课堂\方法目的的核心部分时,我都是外表,我想知道我不是唯一的...我最担心的是必须把我正在使用的每一小块助手都写成我班上的依赖。

      谢谢!

1 个答案:

答案 0 :(得分:7)

由于这次讨论引起了争议,我将简短地回答你提出的两点:

  1. 本机PHP json_encode函数可以被视为帮助器,因为它是idempotent。简而言之,它没有依赖关系,并且具有可预测的输出。因此,例如date函数不是辅助函数。由于这个原因,许多人回避它,而是使用DateTime类。

  2. 泰勒对责任膨胀的意思是,既然你没有预先声明你的依赖关系,你就不会意识到你的控制器做了多少。如果您被迫预先声明您的依赖项(通过注入),那么当您的控制器具有太多依赖项时,您更有可能意识到,并将一些职责抽象到自己的类中。

  3. 再次注意,我在这里没有提供意见;关于它的争议太多了。我只是澄清你所问的内容,以便你能形成自己的知情意见。