skillup

技術ブログ

PHP プログラミング全般

アプリケーションアーキテクチャについて 〜ドメインモデルに関して〜

投稿日:

前回のトランザクションスクリプトパターンの反省から

今回はいわゆるドメインモデルの具体例に関して。

ドメイン駆動型設計には以下のような特徴があります。

大きく、アプリケーションの構成を以下のように分けます。

主な構成

ルーティング

URLとコントローラの橋渡し

コントーラー

URLからビューまでの橋渡し

サービス

一連のビジネスロジックの記述部分

リポジトリ

DB(エンティティ)とのやりとりなど

エンティティ

DBをオブジェクトに置き換えたものです。

ビュー

実際のHTML部分

のように分けるのが一般的です。

個人的に上記のような形で処理を書いて見ましたが、

  • 細かい仕様変更があった場合に上位(例えばコントローラー)の修正を必要としなくなる
  • 規模によってはサービスとリポジトリを分ける必要がないかも
  • 単純な検索プラスCSV出力などの機能を言われた時に下位(サービス以下)の処理を使い回すことができる
  • テストがしやすい

などのメリットが多々あります。

参考文献

PHPフレームワーク Laravel Webアプリケーション開発 バージョン5.5 LTS対応 (日本語)

Laravelアーキテクチャ 3 アプリケーションアーキテクチャ

参考URL

ドメイン駆動開発入門

-PHP, プログラミング全般
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

エラーハンドリング

エラーが起きた時にPHPだと画面に出ますが(出ない場合は画面が白くなります)、これを検知し、ログに吐いたり任意の処理をできるのがエラーハンドリングです。 フレームワークなどにはほぼこの仕組みが内在して …

no image

オブジェクト指向 クラスの設計と業務ロジックの整理

本日も引き続き「現場で役立つシステム設計の原則」を読み進めてます。 本日は主にクラスの作り方について。 Contents1 クラス設計と業務ロジック1.1 要点1.2 感想 クラス設計と業務ロジック …

no image

cakePHP3 serialize&compact

Contents1 serialize2 compact serialize cakePHP3の記述で

みたいな記述をよく見かけていま …

no image

cakePHP Tips その2

またまたCakePHPのネタです。 タイトルから内容がわからなくてすいません。 五月雨式に行きます。 Contents1 コントローラーごとのベースになるテンプレートの変更2 linkタグでのHTML …

no image

リーダブルコードまとめ

リーダブルコードほぼ読み切ったのでまとめを。チェックリスト化して、常にこれを見ながらコードは書いたほうがよさげ 前半のまとめや参考リンクでみたものとマージします。 Contents1 変数の名称2 コ …