はじめに
Laravelのアプリ構成について学んだことを記載していきます。
Laravelで作成されたプロジェクトはファイルやフォルダが多いので、
chatGPTに使用頻度の高いものをピックアップしてもらいました。
※現状ほぼchatGPTの回答を使っています。
学習を進めていく中で更新していく予定です。
アプリ構成
1. app/
- 概要: アプリケーションの主要なビジネスロジックが含まれるディレクトリです。
-
主要サブディレクトリ:
-
Models/: アプリケーションのデータベースのエンティティを表すEloquentモデルが配置されます。例:
User.php
。 -
Http/Controllers/: ユーザーのリクエストを処理するコントローラが配置されます。例:
HomeController.php
。 -
Http/Middleware/: リクエストがコントローラに渡される前に実行されるミドルウェアが配置されます。例:
Authenticate.php
。 -
Providers/: サービスプロバイダーが配置されます。アプリケーションの設定やサービスの登録を行う場所です。例:
AppServiceProvider.php
。
-
Models/: アプリケーションのデータベースのエンティティを表すEloquentモデルが配置されます。例:
2. routes/
- 概要: アプリケーションのルーティング設定が含まれるディレクトリです。
-
主要ファイル:
- web.php: Webアプリケーションのルーティング定義が書かれます。一般的なHTTPリクエスト(GET, POST, PUT, DELETEなど)のルートを定義します。
-
api.php: APIリクエストのルーティング定義が書かれます。
/api
プレフィックスのついたルートがここに記述されます。
3. resources/views/
- 概要: アプリケーションのビュー(テンプレート)が含まれるディレクトリです。
-
主要ファイル:
-
Bladeテンプレートファイル: LaravelのテンプレートエンジンであるBladeで記述されたファイルが含まれます。例:
welcome.blade.php
。ビューはユーザーに表示されるHTMLを生成します。
-
Bladeテンプレートファイル: LaravelのテンプレートエンジンであるBladeで記述されたファイルが含まれます。例:
4. config/
- 概要: アプリケーションの設定ファイルが含まれるディレクトリです。
-
主要ファイル:
- app.php: アプリケーションの基本設定が書かれています。アプリケーション名、タイムゾーン、ロケールなどが設定されます。
- database.php: データベース接続の設定が書かれています。データベースの種類や接続情報などをここで管理します。
5. database/migrations/
- 概要: データベースのスキーマを管理するマイグレーションファイルが含まれるディレクトリです。
-
主要ファイル:
- マイグレーションファイル: データベースのテーブルやカラムの作成・変更を定義するファイルが含まれます。マイグレーションを実行することで、データベーススキーマが自動的に更新されます。
6. public/
- 概要: Webサーバーが公開する静的ファイルが含まれるディレクトリです。
-
主要ファイル:
- index.php: アプリケーションへのすべてのリクエストがこのファイルにルーティングされます。Laravelアプリケーションのエントリーポイントです。
- CSS、JavaScript、画像ファイル: 静的なフロントエンドリソースがここに配置されます。
7. storage/
- 概要: アプリケーションによって生成されたファイルを保存するディレクトリです。
-
主要サブディレクトリ:
-
logs/: アプリケーションのログファイルがここに保存されます。例:
laravel.log
。 - app/: アプリケーションが生成するファイルがここに保存されます。
-
logs/: アプリケーションのログファイルがここに保存されます。例:
8. vendor/
- 概要: Composerでインストールされた外部ライブラリが含まれるディレクトリです。
-
主要サブディレクトリ:
- autoload.php: オートローダーのファイルです。外部パッケージを自動的にロードするために使用されます。
9. artisan
- 概要: LaravelのCLI(コマンドラインインターフェース)ツールであるArtisanを実行するためのスクリプトです。Artisanを使ってマイグレーション、シーディング、ルートリストの確認など、多くのタスクを自動化できます。
参考
上記ディレクトリの詳細や他のディレクトリについては下記サイトがわかりやすかったです。