前提
スキルアップするために個人開発し、その手順を残していこうと考えている記事です。PHPは少しできる程度でTypeScriptは初心者です。
環境づくり
Dockerを使って導入していきましょう。
以下の記事を参考に導入していきます。
私の場合m1Macなのでm1用のコンテナ(?)をダウンロードするように設定してあげましょう
services:
db:
platform: linux/x86_64 <-ここを追加します
image: mysql:5.7.36
container_name: "mysql_test"
あとは、特にすごくわかりやすく手順等書かれているため、問題なく環境を構築することができました。
今回のアプリケーションの構成?基本的な考えを書いておこうと思います。
.src
├── app
| ├──http
| | ├──Controllers
| | └──Requests
| ├── Models
│ ├── Services
│ └── Rules
構成
上記のようなバックエンドの処理の構成にしています。
コントローラーでは、データの処理はせず、受け渡しのみを行います。(理由としては、コントローラに何もかもを書くと非常に長く読みにくいものになってしまう可能性があるため。)
リクエストでは受け取ったデータにバリデーションを適用します。
モデルでは DBとのやりとりを行います。今回のアプリケーションではEloquantを使わず、クエリビルダもしくはSQLを使用し、データのやり取りを行いたいと思います。(理由はSQL力の向上のため)
Serviceではコントローラーから来たデータの処理や整形、モデルからきたデータの処理など、主な処理をここで行います。
Ruleではバリデーション時に複雑なルールを作成するとき(例えば、存在確認する際に複数テーブルを結合したりしてデフォルトのバリデーションルールでは適応できない時)にここにファイルを作成し、リクエストに引用します。
具体的な処理の流れは以下のようになります。
POST時
フロントから来たデータ→リクエスト(ここでバリデーションを適用)→コントローラ→サービス→モデル→サービス→コントローラ→フロントへ渡すデータ
というふうになります。
次回からは具体的なアプリケーションを作成していきたいとおもいます(が何を作るかは考えていません。よくあるTODOアプリケーションとかにユーザー機能つけて管理者とかつけて複雑にするのかなあ?いいアイデアはないので多分よくあるものを作ります)。