【发布时间】:2018-11-21 02:46:21
【问题描述】:
我可能知道 DI、Solid Principles、工厂模式、适配器模式等等。现在假设我正在创建一个 laravel 应用程序,它会很大。假设我有一个 postcontroller,它是资源并且具有 CRUD 方法。现在让我们说在那个控制器的函数中,我有一个后模型并使用它从数据库中检索数据。我有一个 store 函数,我在其中创建 new Post() 然后将其放入数据库。
1) 直接在 PostController 的函数中使用 Post 模型并使用 new Post() 是一种好习惯吗?有什么不好的?我知道这样我没有使用依赖注入和模式,但为什么还是不好?如你所知,我仍然可以在没有依赖注入的情况下模拟对象,因为 laravel 有很多令人惊叹的测试功能。那为什么在controller的函数里写new关键字,直接用Post模型就这么不好呢?
【问题讨论】:
-
它在哪里说你不应该在 Laravel 控制器函数中使用
new {Model}?另外,这个问题有太多的问题...... -
因为我可以在 IOC 的帮助下通过 CONSTRUCTOR 注入这个模型,这样更好,因为在以后,它会更好地用于测试或许多其他事情。
-
对,但这并不意味着你不应该使用
new {Model},它只是意味着有一个替代。另外,请不要全部输入大写;它显得粗鲁。 -
无论如何测试控制器都是有问题的。你必须嘲笑太多东西。