slimphp/Slim-Skeleton (Slim4) についてずっと読解を試みては挫折を繰り返してきたのですが、ようやく骨子が見えてきたのでメモ。
Slim4 の Slim-Skelton をカスタマイズして dotenv, Whoops, debugbar を入れるでちょこっと触ってから2年経過しているという恐ろしさ……。ずっと取り組んでいたわけではなく散発的とはいえ……。
ディレクトリ・ファイルと役割
- Action:
- MVC の Controller 。ルーティングやパラメータによって対応する Domain とやり取りをする。
- ただし Fat Controller にならないように1メソッドを1クラスに切り分けるイメージ。
- Slim4 Skeleton の場合、
respond()
メソッド が Action クラスの中にいるので Responder が同居している。サンプルでは JSON のレスポンスだけで超薄いのでわざわざ別で記述しなくても……ということなのかもしれない。
- Domain:
- MVC の Model 。データモデルというだけでなく、ビジネスロジックも表現する。
- Repository:
- Model のデータ永続化を抽象化したオブジェクト。Slim4 Skeleton の場合は抽象化しているので Interface 。
- Middleware:
- ADR ではなく汎用的な話。各 Action で共通する処理。
- Infrastructure:
- ADR 固有の話ではない。外部データソースとのやり取りが責務。
- 相手は DB や API が想定される。
- Persistence:
- ADR 固有の話ではない。 DB とのやり取りとデータの永続化が責務。
- DB とやり取りするということは、 Domain (Model) を具象化することになる。サンプルでもインメモリだが Interface の Repository を implements している。
これで「この場合はどのディレクトリ・ファイルをいじれば良いか」の感覚が掴めてきました。
参考
Slim4
- GitHub – slimphp/Slim-Skeleton: Slim Framework 4 Skeleton Application
- Slim4 に dotenv と migration の機能を追加していい感じにする – Qiita
- PHPのマイクロフレームワーク「Slim4」の「slim-skeleton」を使用してハマったこと : ビジネスとIT活用に役立つ情報
- Slim4 を使ってみたメモ – ngyukiの日記
- Slim4をサブディレクトリで走らせる方法 – Qiita
- Slim-Skeletonを使ってslim4.0を構築しするだけ – Qiita
- Slim 4 – Tutorial | Daniel Opitz – Blog
ADR
- ADRパターン実践時のトレードオフとの向き合い方|PHP|開発ブログ|株式会社Nextat(ネクスタット)
- LaravelでのADR(Action-domain-responder)実装
- Laravel で DDD のレイヤードアーキテクチャを試す
- Lumen\/Laravel Action-Domain-Responder(ADR)アプローチ – Qiita