关于 Laravel 立面的 2 个小问题

2 small questions regarding Laravel facades

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

  1. 我们一直在使用静态函数——我敢肯定没有人会停止使用 dd() 帮助程序,但显然即使是纯 PHP 静态函数,如 json_encode()array()。为什么将外观后面的 laravel classes 视为类似的辅助函数而不是 class 依赖项没有意义?

不仅如此,很多时候我们在方法内部的狭窄控制流(或条件)中使用那些 dependencies,而 class\method 确实不一定依赖于所有这些助手时间(例如用户 class 仅在用户通过身份验证等时使用)

  1. 在他对这场辩论的回应中,Taylor Otwel 自己说使用立面可能会导致 responsibility bloat in your classes 意味着我们可能会倾向于写 classes\methods 做太多而不是将它们分开 -但我不明白使用外观而不是在承包商或方法中注入所有这些 classes 在责任方面有何不同 - 据我了解,这只是你 "declare" 那些 classes - 在方法签名中或其内部(我知道这有很多差异,但在 class 责任问题中看不到一个)。有人可以解释一下吗?

最重要的是我问这个是因为当它们作为助手而不是作为 class\method 目的的核心部分时,我显然完全支持外墙,我想知道我不是只有一个...我非常担心必须在 classes.

中编写我用作依赖项的每一小段助手

谢谢!

由于本次讨论充满争议,我将简而言之,直接回答您提出的两点:

  1. 原生的PHPjson_encode函数可以被认为是一个辅助函数,因为它是idempotent. In short, it has no dependencies, and has a predictable output. So for example the date function is not a helper function. Many people shy away from it for that reason, and use the DateTimeclass。

  2. Taylor 所说的责任膨胀的意思是因为您没有预先声明您的依赖关系,所以您没有意识到您的控制器做了多少。如果你被迫预先声明你的依赖关系(通过注入),你更有可能意识到你的控制器有太多的依赖关系,并将一些责任抽象到他们自己的 class.

再次请注意,我不是在这里发表意见;围绕它的争论太多了。我只是澄清一下您的问题,以便您形成自己的知情意见。