Open2

php/laravelことはじめ

dowanna6dowanna6

config周り

ディレクトリ周り

config

  • web.php
    • ビューとバックが密結合したコードはこちら?
    • web middleware groupに入れられるためセッション情報を保持しやすいらしい
    • return viewだけじゃなくてstreamedResponseも返せるみたい
  • api.php
    • web middleware groupではなくapi middleware groupに入っているのでsession stateへのアクセス不可
    • 必要ならsanctumを使えとのこと

database

  • マイグレーションとか管理してる

storage

  • コンパイルされたbladeテンプレートとかファイルベースのセッションが保存されるらしい

test

  • *Test.phpで終了するテストファイルを格納しとく

vendor

  • composerの依存関係が保存される

app周り

http/console

  • consoleはartisanからのコマンドを管理しておける
  • httpは普通のコントローラー

event

  • デフォルトでは作成されないがドメインイベントの実装に役立ちそう。これ便利だな

mail

  • symfony mailerを使ってメール送れる
  • メール本文はphpファイルとして表現できる(resources/views/mailsの中に格納されている)

model

  • eloquentのモデルを格納している(active record的な)

providers

  • DIコンテナ的な立ち位置だろうか
  • 共通する処理とか拡張機能を書くところっぽい

フロントエンドまわり

inertia

気になってること

-? 'env' => env('APP_ENV', 'production'),

気になってたこと

  • sail起動とartisan起動の違い
    • sailはdocker-compose使って自動的にdbとかmaihogとかlaravelアプリを動かす上で必要な外部サービスもまとめて起動してくれる感じかな
      • docker psすると大量に立ち上がってる
      • 開発時に気軽に使えるよって感じの立ち位置かな
    • artisanはlaravelのweb app部分だけを立ち上げてるっぽい
      • 本番はこっちって感じなんだろうか
dowanna6dowanna6

inertia

仕組み

  • 要はルーティングライブラリで<Link>タグでラップすることによりページ全体のリクエストをxhrに変換する
  • 最初のリクエストに対してhtmlレスポンスが帰ってくるが、その際にdata-pageがattributeにくっついたdiv id="app"が含まれている
    • next.jsのgetServersidePropsみたいなイメージで使えるのかな。レンダリングはされないけど
  • 自動的にx-inertiaヘッダを付与してリクエストを飛ばす。受け取ったサーバーはhtmlではなくjsonを返す
    • inertia visitとstandard full page visitが存在することが肝
  • jsonの中身とdata-pageの中身はどちらも'page object'と呼ばれる形式に沿っている
    • component
    • props
    • url
    • version
      • こいつが変わったらinertia visitじゃなくてfull page visitに自動的に切り替える
      • x-inertia-versionにバージョンを含めて送る
      • サーバー側で差分を検知したら409を返す。かつx-inertia-locationヘッダを付与して返す
      • もしflash dataが存在する時に409が起きたらもう一度flashする

気になったこと

  • ?swrとの組み合わせ
  • ?reduxとの組み合わせ
    • shared-dataの仕組みに寄せざるを得ない?
    • これ全てのリクエストにshared-dataを入れておくってことなのかな...
    • 名前空間も被る可能性があるらしい
  • ?既存の認証との組み合わせ