关于Laravel外墙的两个小问题

amo*_*mos 9 laravel laravel-5.1

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

  1. 我们一直在使用静态函数 - 我确信没有人会停止使用dd()帮助器,例如,显然甚至是纯粹的PHP静态函数,如json_encode()或array().为什么将laravelFacade背后的类看作类似的辅助函数而不是类依赖?

更重要的是,很多时候我们在方法dependencies内的狭窄控制流(或条件)中使用那些,并且类\方法确实不一定总是依赖于那些帮助程序(例如,仅当用户通过身份验证时才使用用户类)等等.)

  1. 在他对这场辩论的回应中,泰勒·奥特威尔自己说,外墙的使用可能会导致responsibility bloat in your classes我们可能会想要编写太多而没有将它们分开的课程\方法 - 但我不明白如何使用外墙而不是注入承包商或方法中的所有类别在责任方面都是不同的 - 从我理解的仅仅是你在"声明"那些类的地方 - 在方法签名中或在其内部的变化(我明白这有很多不同,但是没有看到一个在课堂上的责任问题).有人可以解释一下吗?

最重要的是我问这个问题,因为很明显,当他们担任助手而不是作为课堂\方法目的的核心部分时,我都是外表,我想知道我不是唯一的......我我最担心的是必须把我正在使用的每一小块助手都写成我班级的依赖.

谢谢!

Jos*_*ber 7

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

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

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

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

  • @amosmos Idempotence不止于此.它通常是一个仅对所提供的参数起作用的功能,更重要的是,它没有副作用.您(可选)为其提供一些数据,并返回一些其他数据.发送电子邮件的电话不是*幂等的.您可以为视图争论相同,因为它们创建了缓存文件.此外,您提到的所有外观也受全局配置的影响; 他们有内部状态.这使他们更少帮助者和更合适的子系统. (2认同)