LoginSignup
20
22

More than 3 years have passed since last update.

Service層を意識したLaravelのMVCモデル(概念編)

Last updated at Posted at 2020-02-24

はじめに

Laravelにおいて個人的な開発であればMVCモデルを意識して行えば問題ないかと思いますが、大規模なサービス開発や長期的に運用するはよりレイヤーの構造を意識した開発を行うことが、安定したサービスを運用することに大事かと思います。
そこで今回はService層を意識したLaravelのMVCモデルについて概念のおさらいをしていきます。

Service層について

そもそもサービス層とは??

スクリーンショット 2020-02-24 15.04.08.png
P of EAA: Service Layer
Laravelの公式ドキュメントに以下の記載がありました。

Service providers are the central place of all Laravel application bootstrapping. Your own application, as well as all of Laravel's core services are bootstrapped via service providers.

引用:Service Providers - Laravel - The PHP Framework For Web Artisans

「サービスプロバイダはLaravelアプリケーション内の全てのserviceがbootstrapされる場所である」と述べられています。
serviceとは各クラスからから提供される機能と頭の片隅に入れておくと良いかと思います。また、bootstrapするというのは、イベントリスナ、ミドルウェア、ルートなどLaravelアプリケーションに必要な全てを起動するということになります。

構成とそれぞれの役割

スクリーンショット 2020-02-24 14.54.05.png
ルーティング:ルーティング、認証、フィルタ
コントローラー:HTTPリクエスト、リクエスト、レスポンス
サービス:事前条件検証、ビジネスロジック
モデル:データーベースアクセス、エンティティ固有の処理

結局サービス層ではなにをするのか

ビジネスルールに関わる処理を記載します。
ビジネスドメイン、事前条件検証とビジネスロジック、HTTP関連以外(arrayやobjectで渡す)などです。
例えばECで言うと、在庫がないと注文を確定できない等、ビジネスルールに即して注文確定させるような主処理などです。

終わりに

概念的なものだけになってしまったので次回あたりで実際どんな感じに使うのかまとめていきます。
参考:
Laravel で Service 層を取り入れるときに検討したいこと - Qiita
レイヤードアーキテクチャを意識したPHPアプリケーションの構築

20
22
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
22