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におけるstaticキャッシュ

PHPにおけるstaticキャッシュに関して。 PHPのおけるキャッシュはいくつかありまして、一般的にはmemcachedなどのKVS方式のキャッシュサーバーなどを使う方法が一般的かと思います。 キャ …

no image

PHPの開発事情 (PHPBrew/ビルトインサーバー/Xdebug/PHPUnit/Composer)

私自身、プログラミングは好きなんですがあまり現代の流行の技術に興味がありません(汗) IT業界はドッグイヤーならぬ、マウスイヤーとも呼ばれているようで、常に最新技術の動向には目を光らせていく必要があり …

no image

phpdocument

今回はphpのdocument生成ツールについて。 Contents1 phpdocument1.1 インストール1.2 使い方1.3 参考リンク phpdocument https://www.ph …

no image

PHPエルビス演算子

PHP エルビス演算子について えープログラムでよくあるnullかどうかをチェックしてnullじゃなければその値を使い、そうじゃなければディフォ値を使うみたいな処理 例えばPOSTを受けてそれを変数で …

no image

ECCUBE3ディレクトリ構成

ECCUBE3のディレクトリ構造に関して。 自分用 自分用メモです。 設定情報 /app/config/eccube 定数 /src/Eccube/Common/Constant ログ /app/lo …

アーカイブ