イントロダクション
Laravelのデフォルトアプリケーション構造は、アプリケーションの大小にかかわらず、素晴らしいスタートを切ってもらえることを意図しています。もちろん、アプリケーションは皆さんのお好みに応じ、自由に体系立ててください。クラスがComposerによりオートローディングできる限り、Laravelはクラスをどこに配置するか、あなたに強制することはまずありません。
ルートディレクトリ
新しくインストールしたLaravelのルートディレクトリーには、様々なフォルダーが用意されています。
app
ディレクトリーは、皆さんが想像している通り、皆さんのアプリケーションのコアコードを配置します。このフォルダーの詳細は、このあと説明します。
bootstrap
フォルダーは、フレームワークの初期起動やオートローディングの設定を行うファイルを含んでいます。
config
ディレクトリーには、名前が示す通り、アプリケーションの全設定ファイルが設置されています。
database
フォルダーは、データベースのマイグレーションと初期値設定(シーディング)を配置します。
public
ディレクトリーは、フロントコントローラーとアセット(画像、JavaScript、CSSなど)を配置します。
resources
ディレクトリーは、ビューやアセットの元ファイル(LESS、SASS、CoffeeScript)、「言語」ファイルを配置します。
storage
ディレクトリーへは、コンパイルされたBladeテンプレート、ファイルベースのセッション、ファイルキャッシュなど、フレームワークにより生成されるファイルが保存されます。
tests
ディレクトリーには、皆さんの自動テストを配置します。
vendor
ディレクトリーへは、Composer依存パッケージが配置されます。
Appディレクトリー
皆さんのアプリケーションの「肉」の部分は、app
ディレクトリー内に配置します。このディレクトリーはデフォルトで、App
名前空間のもとに置かれており、PSR-4オートローディング規約を使い、Composerがオートロードしています。**
app:name
Artisanコマンドを使用し、この名前空間を変更できます。**
app
ディレクトリーは、多様なサブディレクトリーを持っています。Console
、Http
、Providers
などです。Console
とHttp
ディレクトリーは、アプリケーションの「コア」へAPIを提供すると考えてください。HTTPプロトコルとCLIは、両方共にアプリケーションと相互に関係するメカニズムですが、実際のアプリケーションロジックではありません。言い換えれば、これらはアプリケーションに指示を出す、2つの方法に過ぎません。Console
ディレクトリーは全Artisanコマンドで構成し、一方のHttp
ディレクトリーはコントローラーやフィルター、リクエストにより構成します。
Commands
ディレクトリーはもちろん、アプリケーションのコマンドを置いておく場所です。Commandsはアプリケーションにより、キューに投入されるジョブを表すと同時に、現在のリクエストのライフサイクル中に、同期的に実行できるタスクを表します。
Events
ディレクトリーは、名前の通りイベントクラスを設置する場所です。もちろん、イベントとして扱うクラスを使用することは必須ではありません。しかし、使用を決めた場合、Artisanコマンドラインにより生成されるクラスは、デフォルトでこのディレクトリーへ設置されます。
Handlers
ディレクトリーは、コマンドとイベント両方のハンドラークラスで構成されています。ハンドラーは、コマンドかイベントを受け取り、コマンドか発行されたイベントに応じたロジックを実行します。
Services
ディレクトリーは、アプリケーションを機能させるのに必要な、数々の「ヘルパ」サービスで構成します。例えば、Laravelに含まれるRegistrar
サービスは、アプリケーションの新しいユーザーのバリデーションと生成の役割を担っています。サービスの他の例には、外部APIやメトリックシステムと連携したりするものや、自分自身のアプリケーションから情報を収集するものまで上げられます。
Exceptions
ディレクトリーは、アプリケーションの例外ハンドラーと、さらに自分のアプリケーションから投げられる例外を置いておくには最適でしょう。
注目:
app
ディレクトリー中、多くのクラスがAritsan コマンドにより生成されます。使用できるコマンドを確認するには、端末でphp artisan list make
コマンドを実行してください。
アプリケーションの名前空間付け
上記の通り、デフォルトのアプリケーション名前空間は
App
です。しかし、app:name
Artisanコマンドにより簡単に変更することもできます。例えば、アプリケーションの名前が"SocialNet"なら、以下のようにコマンドを実行します。
php artisan app:name SocialNet