关于 Laravel 立面的 2 个小问题
2 small questions regarding Laravel facades
我知道这是一个有很多争论的问题,但有两个方面我没有看到太多参考,想知道答案:
- 我们一直在使用静态函数——我敢肯定没有人会停止使用
dd()
帮助程序,但显然即使是纯 PHP 静态函数,如 json_encode()
或 array()
。为什么将外观后面的 laravel
classes 视为类似的辅助函数而不是 class 依赖项没有意义?
不仅如此,很多时候我们在方法内部的狭窄控制流(或条件)中使用那些 dependencies
,而 class\method 确实不一定依赖于所有这些助手时间(例如用户 class 仅在用户通过身份验证等时使用)
- 在他对这场辩论的回应中,Taylor Otwel 自己说使用立面可能会导致
responsibility bloat in your classes
意味着我们可能会倾向于写 classes\methods 做太多而不是将它们分开 -但我不明白使用外观而不是在承包商或方法中注入所有这些 classes 在责任方面有何不同 - 据我了解,这只是你 "declare" 那些 classes - 在方法签名中或其内部(我知道这有很多差异,但在 class 责任问题中看不到一个)。有人可以解释一下吗?
最重要的是我问这个是因为当它们作为助手而不是作为 class\method 目的的核心部分时,我显然完全支持外墙,我想知道我不是只有一个...我非常担心必须在 classes.
中编写我用作依赖项的每一小段助手
谢谢!
由于本次讨论充满争议,我将简而言之,直接回答您提出的两点:
原生的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 DateTime
class。
Taylor 所说的责任膨胀的意思是因为您没有预先声明您的依赖关系,所以您没有意识到您的控制器做了多少。如果你被迫预先声明你的依赖关系(通过注入),你更有可能意识到你的控制器有太多的依赖关系,并将一些责任抽象到他们自己的 class.
再次请注意,我不是在这里发表意见;围绕它的争论太多了。我只是澄清一下您的问题,以便您形成自己的知情意见。
我知道这是一个有很多争论的问题,但有两个方面我没有看到太多参考,想知道答案:
- 我们一直在使用静态函数——我敢肯定没有人会停止使用
dd()
帮助程序,但显然即使是纯 PHP 静态函数,如json_encode()
或array()
。为什么将外观后面的laravel
classes 视为类似的辅助函数而不是 class 依赖项没有意义?
不仅如此,很多时候我们在方法内部的狭窄控制流(或条件)中使用那些 dependencies
,而 class\method 确实不一定依赖于所有这些助手时间(例如用户 class 仅在用户通过身份验证等时使用)
- 在他对这场辩论的回应中,Taylor Otwel 自己说使用立面可能会导致
responsibility bloat in your classes
意味着我们可能会倾向于写 classes\methods 做太多而不是将它们分开 -但我不明白使用外观而不是在承包商或方法中注入所有这些 classes 在责任方面有何不同 - 据我了解,这只是你 "declare" 那些 classes - 在方法签名中或其内部(我知道这有很多差异,但在 class 责任问题中看不到一个)。有人可以解释一下吗?
最重要的是我问这个是因为当它们作为助手而不是作为 class\method 目的的核心部分时,我显然完全支持外墙,我想知道我不是只有一个...我非常担心必须在 classes.
中编写我用作依赖项的每一小段助手谢谢!
由于本次讨论充满争议,我将简而言之,直接回答您提出的两点:
原生的PHP
json_encode
函数可以被认为是一个辅助函数,因为它是idempotent. In short, it has no dependencies, and has a predictable output. So for example thedate
function is not a helper function. Many people shy away from it for that reason, and use theDateTime
class。Taylor 所说的责任膨胀的意思是因为您没有预先声明您的依赖关系,所以您没有意识到您的控制器做了多少。如果你被迫预先声明你的依赖关系(通过注入),你更有可能意识到你的控制器有太多的依赖关系,并将一些责任抽象到他们自己的 class.
再次请注意,我不是在这里发表意见;围绕它的争论太多了。我只是澄清一下您的问题,以便您形成自己的知情意见。