PRG(Post/Redirect/Get)とは何か
Webアプリケーションのフォーム実装では一般的な手法.
続きを読むPHPDoc is 何
なぜ書くか
動的型付け言語に不足する部分を埋める
なにを書くか
1. 必須項目
型の情報
@var [型] 説明
@param [型] 変数名 説明
@return [型] 説明 (戻り値がない場合は省略可)
複数の型を返す場合にmixedと書けるが, これは避けたい.
複数の型を書く場合は, int|string|...
のように記述できる.
- 型はなるべく具体的に書く
Builderと書いても * Core\Builder\Builder; * Illuminate\Database\Query\Builder など複数あり, 正しく判断できない場合がある.
- @return void is 何
voidは戻り値がないことを明示的に示す
例外オブジェクト
@throws [Exception Type] [説明]
メソッドが発行する例外オブジェクトを定義できる. これが書いてあると, メソッドを呼ぶときに, どのようなtry ~ catchを書くべきかを判断できる.
2. 必要に応じて書く項目
メソッドを実装する元になったやり取りへの参照
@link [url] [説明]
RedmineのチケットのURLやGitLabのissueなど
【phpcon2018 アウトプット】独立したコアレイヤパターンによる PHP アプリケーションの実装
独立したコアレイヤパターンによる PHP アプリケーションの実装
背景
なぜ独立したコアレイヤパターンを実装するのか
- 対象ドメインが違うから
MVC + Service
レイヤードアーキテクチャ
- ドメインを中心
- 分離はできるが、それなりに複雑
- もう少しシンプルにできないか
ベースのアイデア
- WhatとHowをレイヤで分ける
- コアロジックと技術詳細(フレームワーク含む)の分離
- 守るべきシンプルなルールのみを決める
独立したコアレイヤパターン
- アーキテクチャパターンの1つ
- 2つのレイヤに分離
- コアレイヤ
- コアロジックを実装
- アプリケーションレイヤ (旧:サービスレイヤ)
コアレイヤ
- コアロジック (What) を実装
- Plain PHP
- フレームワークに依存しない
- データ構造や操作などの一部ライブラリは利用
- コアレイヤのみに依存
- 技術詳細はインターフェイス経由で利用
- ユースケース、ドメインモデルなど
技術詳細インターフェイス
要求をインターフェイスにする
依存関係逆転の放送
- Solid原則のD
- レイヤやモジュール間の依存関係をインターフェイスを利用して逆転させる
依存関係逆転の法則
ユースケースはインターフェイスに依存 アダプタがコアレイヤのインターフェイスに依存 * 依存関係が
アプリケーションレイヤ
まとめ
- コアレイヤとアプリケーションレイヤに分離
- コアレイヤからアプリケーションレイヤはインターフェースを利用する
実装例
コアレイヤパターンの現場
レイヤわけに迷う
コアレイヤへの入出力データ
ルールの明確化
まとめ
- コアレイヤとアプリケーションレイヤに分離
- コアレイヤからアプリケーションレイヤはインターフェースを利用してアクセス
- 依存関係逆転の法則
- フレームワーク、ライブラリは素晴らしい