【问题标题】:When To Use Command / Event / Repository Patterns in MVC Pattern Applications / Laravel?何时在 MVC 模式应用程序/Laravel 中使用命令/事件/存储库模式?
【发布时间】:2016-06-22 21:21:55
【问题描述】:

我在理解整个命令(现在是 Job)时遇到了一点问题 |活动 | MVC 应用程序中的存储库编码模式,特别是在 Laravel 中。 我了解每一个的基本原理,我不明白的是什么时候知道并确保我们应该使用每一个。 我知道无法确定我们的任务处理属于这些模式中的哪一种,这在很大程度上取决于开发人员个人强调文本的偏好,但如果有人能明确这些概念,我将不胜感激对我来说多一点。

假设我们想将一本书保存到我们的应用程序中,我通常会创建 Route > Controller > Repository > Model 并以最有意义的方式在它们之间划分工作。 在这个模型中,我们可以像在保存项目(书)后触发事件一样使用事件,并在程序的其他地方监听它,这样我们就可以将它添加到数据库的通知表中,这将发出警报管理员/用户/...

现在,我不确定这是否是处理此类问题的“A”正确方式,但是,我最想知道的是:

“我应该使用命令来保存项目还是我可以直接将信息从控制器传递到存储库并保存在那里? 哪种方式最符合模式?

最后,您能否举一些在此类应用程序中使用命令的示例?

提前致谢, 感谢您的时间和耐心。

【问题讨论】:

    标签: php laravel events model-view-controller command-pattern


    【解决方案1】:

    命令用于从命令行执行任务 - 例如,这对于 cron 作业或作为主管的工具可能很有用。我经常将它们用于我不想提供用户界面的管理任务(当时)。现实生活中的示例:用于 cron 作业的命令,用于从 SAP/SAS 等第三方软件导入数据。

    事件:事件驱动编程是解耦应用程序部分的另一种方式。应用程序的一部分触发一个事件,另一部分监听它并执行一些事情。您可能会发现这非常优雅或更难调试。如果您仍在为 MVC 框架的基本概念而苦恼,我建议您暂时跳过这种方法。

    至于“在控制器、存储库和模型之间划分代码”,这取决于您的个人品味,也可能取决于应用程序的大小。对于小型应用程序,我只需将书保存在控制器中。 10分钟。完毕。对于更大的应用程序,我将创建一个服务类并从控制器调用此服务类。服务类使用使用模型的存储库类,因此控制器非常小并且不包含太多“有价值的代码”。我喜欢关注这篇文章:

    http://dfg.gd/blog/decoupling-your-code-in-laravel-using-repositiories-and-services

    但我认识许多不遵循这种方法的开发人员。 ;-)

    【讨论】:

    • 非常感谢,但我不确定你对命令所说的内容,确定这是使用它们的一种方式(甚至可能是最合理的方式),但我看过教程/ 源代码,专业开发人员将它们用于应用程序的每个部分,感觉就像是在发出命令,当然主要是在它使它更干净、不会过于复杂和不可读的地方。这样的地方是当感觉像命令时在数据库中保存一些东西时。按照上面的例子,当我们想要命令我们的应用程序添加通知时。我在这里错过了什么吗?
    • 你有这样的源代码的链接吗?我以前从未见过这样的东西,所以看到它可能会很有趣。而且(可能是愚蠢的问题):您指的不是命令设计模式,而是“Laravel 命令”?
    • 我不记得我在其他地方看到过这样的例子,但这里有一个:laracasts.com/series/build-a-laravel-app-from-scratch/episodes/…
    • 这是一个关于 Laracasts 的视频,其中 Jeffrey Way(我从中学到了很多东西的我最喜欢的开发人员和老师)创建了一个主要用于将用户保存到数据库的命令。我意识到这可能只是一个例子,但我几乎不认为有人会举例说明命令在从未发生过的事情上的可用性。在回答你的另一个问题时,我认为 Laravel 使用基本的命令模式,可能和 Laravel 有点不同!但仍然基本相同的交易。也很高兴知道你对这个问题的想法。
    • @herrjeh42 有趣的点,但请注意,链接文章的作者有(更多)recently saidI agree this is overkill (though this opinion has formed since writing this post). I think this approach would be a lot better without repositories, but still feel there is a good case for use of services especially in larger code bases.
    猜你喜欢
    • 2014-03-15
    • 2012-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多