skillup

技術ブログ

PHP アーキテクト設計全般

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

投稿日:2020年2月25日 更新日:

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

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

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

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

主な構成

ルーティング

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

コントーラー

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

サービス

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

リポジトリ

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

エンティティ

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

ビュー

実際のHTML部分

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

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

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

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

参考文献

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

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

参考URL

ドメイン駆動開発入門

-PHP, アーキテクト設計全般
-

執筆者:


comment

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

関連記事

no image

フレームワークの基本的なアーキテクチャについて

フレームワークで大事なのは基本的な文法ではなく、構造の理解だと思います。 PHPですとCake,Laravel,Synfonyなどありますが、1つのものでしっかりと理解できていれば他のものもそれほど問 …

no image

抽象性と可読性のトレードオフに関して

私自身プログラムを書く場合、とにかくコードを書く量を制限したいという思いが強く、多少でも共通化できる箇所がある場合はなるべく共通化するようにしておりましたが、時と場合によっては過剰に共通化したことによ …

no image

CakePHP2系でのテスト処理

cakePHP2系でのテストの処理について。 PHPでのテストといえばphpunitが有名かと思います。cakePHPでも標準でphpunitがはいっており、ユニットテストを行うことができます。 Co …

no image

wordpressのドメイン移行

WordPressのドメイン以降を行いました。 まあ、このブログの直下にエンジニア集客用ブログをおいたんですがね・・・ http://skill-up-engineering.com/gachinko …

no image

オブジェクト指向 データベース層

本日も引き続き「現場で役立つシステム設計の原則」を読み進めてます。 本日は主にデータベース層の考え方について。 Contents1 データべース層1.1 要点1.1.1 典型的なダメテーブル設計1.1 …

アーカイブ