【问题标题】:When to use service layer in laravel mvc framework何时在 laravel mvc 框架中使用服务层
【发布时间】:2020-02-03 07:28:06
【问题描述】:

我的 api 和 web 有相同的代码

所以我尝试在我的项目中使用服务层

我阅读了很多使用 Laravel 制作的开源项目,但其中没有任何服务,我很困惑为什么

更新

我想出了图书馆必须使用的这些方式

1-将job用于业务逻辑https://github.com/akaunting/akaunting/tree/master/app/Jobs

2-使用@Hamelraj 建议的特征

那么这些方法是否可以很好地替代服务层

【问题讨论】:

标签: php laravel design-patterns


【解决方案1】:

一切都是服务。

在 Laravel 的上下文中,生成表单、表单验证、生成 csrf 令牌、身份验证、路由、广播、管理事件、Laravel 应用程序实例本身等都是服务。上面提到的一些服务需要 Laravel 准备或满足请求,还有一些 Laravel 引导以供开发人员以后使用。

像 Laravel 这样的任何其他框架都不知道其开发人员未来还需要什么服务。否则,它会造成不必要的复杂性。因此他们实现了一种称为SOA(面向服务的架构)的设计原则。这样开发人员可以在需要时添加服务,Laravel 会考虑到它们。这意味着您可以在应用程序中使用它们。这完全是要抓住的重点。

希望你能理解!

【讨论】:

  • 我很理解你,但我仍然很困惑,我有多少方法可以防止 web 和 api 中的重复代码?如何解决这个问题?我想我不能为此在 laravel 中使用服务提供者,所以我必须创建一个服务层还是什么?
  • 好吧,你能告诉我一些你认为重复代码发生的代码示例吗?
  • 例如我有很多注册用户的代码,给用户添加数据默认数据,创建一些与用户相关的记录。所以我可以像$userService->create($request) 那样使用Service layer 来完成它,并将我的所有代码都投入使用。但是没有图书馆使用它,我想知道为什么?
  • Laravel 有服务提供者,你所说的服务层实际上是 SOA。这3个都是一样的。所以使用它。查看那里的文档laravel.com/docs/6.x/providers
  • 我理解的是laravel服务商,但是我觉得这里不是放业务逻辑的地方。服务提供商正在为整个应用程序提供一些功能,不是在控制器中调用它的地方(例如在验证之后)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-25
  • 1970-01-01
  • 2023-03-27
  • 2014-04-12
  • 1970-01-01
  • 2023-04-09
相关资源
最近更新 更多