PHPおすすめフレームワーク『Laravel5』入門 ディレクトリ構成の把握
はじめに
PHPフレームワークはCakePHPやCodeIgniter,SymfonyやZendFrameworkなど数多存在しています。2016年、人気のフレームワークは「PHPフレームワークおすすめ一覧【10選】2015年⇒2016年へ向けて。」にまとめてありますので、ご参考ください。
今回はその中でも人気の高い「Laravel」について見ていきたいと思います。Laravelはバージョン5が最新のメジャーバージョンですので、今回は「Laravel5」を使っていきます。
まずはLaravelのインストールを行っておきましょう。インストール方法は「Laravel5をCloud9にインストールしBitbucketへPushするまで手順まとめ」を参考にしてみてください。
PHPフレームワークをインストールすると、デフォルトで様々なディレクトリができます。このディレクトリの大まかな役割分担をざっくりと把握することが、フレームワーク学習の第一歩になります。それではLaravelのディレクトリ構成を見ていきましょう(Laravel4から5に変わるタイミングで、ディレクトリ構成がガラッと変わりましたのでご注意ください)。
Laravel5のディレクトリ構成全体
Laravelのプロジェクトを作成すると、以下のようなディレクトリ構成が出来上がります。
沢山ありますので、一度に全て覚える必要はありません。ざっくりとでよいので全体像を把握しましょう。
それでは、基本的なディレクトリ・ファイルを個別にみていきましょう。
Laravel5のアプリケーション部分のプログラムをまとめた「app」ディレクトリ
まず注目しておきたいのは「app」ディレクトリです。このディレクトリの配下にアプリケーションに関わるソースがまとめられています。
今までのLaravel4でもこのような括りになっていましたが、Laravel4では幾つか、あまり関係のないファイルやディレクトリも含まれていました。
Laravel5になって、そういったディレクトリが除外されることで、より洗練された構成になったと言えるでしょう。
「app」ディレクトリ配下でまず押さえておきたいファイルは「Http/routes.php」です。
Laravel5のルーティングを担う「routes.php」
routes.phpファイルはLaravelのルーティング設定を記述する役割を果たします。
例えば「/laravel/laravel/5」というURLでリクエストがあったときに、
どのプログラムにそのリクエストを渡すのかを設定する役割を担います。
これを自ら実装するとかなり厄介です(URLを解析してファイル名を生成し、そのファイルを読み込む・・といった処理が必要になります)。
こういったルーティングの役割はLaravel以外のPHPフレームワークにも用意されていることが一般的で、フレームワークを利用するメリットの1つに挙げられるでしょう。
Laravel5の設定を担う「config」ディレクトリ
「config」ディレクトリはその名の通り定義ファイルが多数格納されるディレクトリです。
「auth.php」は認証関連の設定、「mail.php」はメールサーバ関連の設定、といった感じです。
中でも「app.php」はLaravelフレームワークのサービスプロバイダと、エイリアス
Laravel5のデータ管理は「database」ディレクトリ
Laravelにはテーブル構成を定義しておき、それをコマンドで一括で実行できる「migration」という機能、
テーブル内のデータを定義しておき、それを一気に流し込む「seed」という機能があります。
(「artisan」コマンドというコマンドで実行します。)
この定義ファイルが配置されているのが「database」ディレクトリになります。
Laravel5におけるドキュメントルート的役割を果たす「public」ディレクトリ
LaravelではHTMLを生成するためにテンプレート(ブレード)ファイルを利用しますが、このpublicディレクトリは、それ以外の
「css」や「js」といったファイルを格納するディレクトリになります。
また、ここに格納されている「index.php」が、リクエストを捌く役割を果たすファイルになります。
Laravel5の「ビュー(View)」にあたる「views」ディレクトリ
「resources」ディレクトリ配下に配置されている「views」ディレクトリは、
Laravelのビューにあたる「ブレード(blade)」ファイルを管理します。
Laravel5の環境設定ファイル「.env」
「app」ディレクトリなどと同階層に格納されている「.env」ファイルはDBへの接続情報やデバッグモードのON/OFFの設定をkey=value形式で記述するファイルになります。
configディレクトリの各ファイルに書かれている内容よりも、こちらの方が優先されるので注意が必要です。「.env」に記載がない場合は、各設定ファイルの方を読むことになります。
まとめ
いかがでしたでしょうか。いくつかピックアップしただけですが、なかなか量がありましたね。
何となく全体像を把握することができたでしょうか。
無理に一度に覚えなくてよいので、プログラミングする際に、今回の内容を思い出していけるようにしておきましょう。
WEBアプリケーション関連 人気連載リンク
基礎からPHPWEBアプリ解発を学ぶなら・・
PHP基礎 連載
より実践的なWEBアプリ開発講座!Bootstrap活用を学ぶなら・・
魁!小野の塾 連載