Laravel3のファイル構成(その1)

タグ: Laravel3  

Laravel3のファイル構造を解説している日本語ページが存在していないようですので軽く説明しておきます。

バンドルが基本

まず、Laravelのファイル構造を理解するには、バンドルが構成の基本となっていることを理解してください。

バンドルは拡張機能としても用意されています。それぞれが小さなアプリケーションと呼んでもよいでしょう。

applicaton/bundlesの中にあるフォルダーそれぞれが、一つのバンドルです。そして、applicationフォルダー自体が、デフォルトとして扱われる特別なバンドルになっています。

トップフォルダーの構成

  • application 上記で説明したように、デフォルトのバンドルです。デフォルトとは様々な場所での呼び出しに、わざわざバンドル名を指定する必要がないこと、そしてLaravelが起動すると最初に呼び出されるバンドルであることを示しています。
  • bundles バンドルがフォルダーに分かれて入っています。インストールした直後はdocsバンドルだけが用意されています。このバンドルは/docsのURIにアクセスした場合に、コアに含まれているドキュメントを表示するようになっています。
  • laravel Laravelフレームワークのコアです。アップデートをする場合は、大抵このフォルダーを上書きするだけで済みます。このフォルダーに含まれているdocumentationフォルダーはドキュメントでMarkdownで書かれています。ですから、そのまま読むことも可能です。(英語です。)もし、実機などで不必要であれば、削除可能です。
  • public LaravelのWeb公開フォルダーです。このフォルダーを仮想ホストのドキュメントルートとして指定することがグッドプラクティスとして推薦されています。
  • storage Laravelで使用されるファイルの置き場所です。その下にフォルダーが使用目的別に分かれています。このフォルダーはWebサーバーから読み書きできる用に設定する必要があります。Linuxであれば、chmod -R uo+rw storageとなります。
  • artisan Laravelのコマンドラインツールです。php artisan コマンド:サブコマンド 引数…の形態で使用します。
  • paths.php その名の通り、Laravelのパスが定義されています。インストールした状態のディレクトリー構成から変更する場合、このファイルを編集し、重要なフォルダーのパスを指定する必要があります。変更しない場合、触る必要はありません。

applicationフォルダーの構成

  • config 設定ファイルです。動作環境により優先する設定が含まれているフォルダーを選択できる仕組みを持っています。他のフレームワークでもお馴染みですね。インストール状態ではサブフォルダーは用意されていません。
  • controllers コントローラーを置くフォルダーです。ファイルは英小文字で作成します。クラス名はファイル目の先頭一文字を大文字にし、_Controllerをつけた名前です。ディレクトリー構造を含む場合は下線で区切ります。
  • language 多国語対応のための言語設定フォルダーです。言語別に分かれています。多言語対応だけでなく、バリデーションのメッセージが気に入らない場合も、自由に変更できます。日本語も含まれています。
  • libraries ライブラリィーを設置するフォルダーです。クラス名がファイル名の先頭一文字を大文字にしたものを付けてあるのでしたら、そのクラスはオートロードされます。ディレクトリー構造はクラス名を下線で区切るか、もしくはディレクトリーを名前空間で表現します。この規則に従わないライブラリーは自前でincludeする必要があります。
  • migrations LaravelはDBの生成や変更にマイグレーションシステムを使用しています。ただし、これを使用しなければLaravelが使用できないというわけではありません。
  • models モデルを定義するフォルダーです。ファイル名は英小文字です。クラス名はファイル名の先頭一文字を大文字にしたものです。ディレクトリー構造は下線で区切るか、もしくはディレクトリーを名前空間で表現します。
  • tasks Artisanコマンドラインを通じて起動する自作コマンドを保存する場所です。コマンドの作成も難しくはありません。
  • tests PHPUnitテストを利用するテストを入れておくフォルダーです。このフォルダー下に置かれた、ファイル名の最後が.test.phpのファイルはphp artisan testコマンドにより、再帰的に探され、実行されます。テストにこのコマンドを使用しなければならないわけでありません。PHPUnitを直接使用したほうが柔軟で、多機能なテストが可能です。
  • views ビューを入れておくフォルダーです。ビューはクラスではありません。.phpもしくは.blade.phpの拡張子をもつファイルです。
  • bundles.php 使用するバンドルを定義するPHPファイルです。インストールしてもここで定義しなければバンドルは有効になりません。
  • routes.php 作成するアプリケーションのルーティング、つまり与えられたURIからどのクラスのどのメソッドを実行するかを定義します。その他、ルーティングに対するフィルターや色々なことを定義します。
  • start.php バンドルのスタートアップファイルです。このapplicationも一つのバンドルであることを思い出してください。エラー表示の制御やオートロードの設定などが定義されています。