PHPフレームワーク「Laravel」MVCとコントローラを利用する

前回は、ルーティングを利用してWebページを表示する解説を行いましたが、Laravelでは通常Webページの処理は「コントローラ」を利用して行います。

今回は、LaravelのMVCとコントローラについて解説します。

コントローラとは?

前回のルーティング(Route::get())はアクセスしたアドレスを元にWebページの表示処理を行いましたが、通常は、アクセスしたアドレスをもとに各処理を割り振るための機能となります。

Laravelでは、実際にWebページを表示処理するための機能が他に備わっています。それが、コントローラです。

MVCとは?

Laravelの機能「コントローラ」を理解するにはMVC(Model-View-Controller)アーキテクチャを理解する必要があります。

MVCとは、3つの要素を組み合わせページを構築していく考え方です。

モデル(Model)データ処理を主に担当し、データベースとの接続に関する処理を扱います。
ビュー(View)Webページの表示を担当します。テンプレート機能などを利用する部分がこれにあたります。
コントローラ(Controller)MVC全体の制御を担当します。処理の内容によってModelを利用したり、Viewを利用したりします。

今回はMVCの「C:コントローラ」を理解していきます。

コントローラを作成する

コントローラを利用するには、まず、コントローラを作成する必要があります。

コントローラの作成にはターミナルを利用し「artisan(アーティザン)」コマンドを実行します。

今回は、「laravelapp」ディレクトリ内に構築されたlaravelの環境に「TestController」を作成します。

※コマンドを実行する前にlaravelが配置されたディレクトリに移動しておきます。

上記のコマンドを実行すると、完了のコメントが表示され、「app」→「Http」→「Controllers」内に「TestController.php」が作成されていることがわかります。

TestController.phpの内容

TestController.phpが作成されたらエディタで開き内容を確認してみましょう。

TestControllerはControllerクラスを継承したクラスで作成されていることがわかります。

アクションを追加

それでは、TestController.phpにアクションを追加してみます。

index()メソッドを追加した状態が下記となります。
内容はreturnでHTMLソースを出力するだけの簡単なものです。

ルート情報を用意

コントローラにアクションを追加したら、「routes」ディレクトリのweb.phpを開き、コントローラに追加したアクションにルートを割り当てる設定を行います。

Route::get()の第一引数にアクセスするURLの文字列、第二引数に利用する「コントローラ名@アクション名」を記述します。

ルートの割り当てが完了したら、http://〇〇/test/でアクセスしてみてください。

TestController.phpに追記したindexメソッドが実行されていることがわかります。

複数のアクションを追加

それではindexメソッド以外にもアクションを追加してみます。
indexメソッドの下にotherメソッドを追加しました。

メソッドを追加したら、ルート情報も新たに追加します。

これで

  • http://〇〇/test/ でのアクセスはindexメソッドが実行されます。
  • http://〇〇/test/other/ でのアクセスはotherメソッドが実行されます。

シングルアクションコントローラ

複数のアクションを設定するのとは反対に1コントローラに1アクションのみの設定も可能です。
このような設定のことを「シングルアクションコントローラ」と言います。

シングルアクションコントローラには通常のめっソドとは違う「__invoke」メソッドを利用します。

まず、シングルアクションコントローラを設定します。

次にルート情報を設定します。
シングルアクションコントローラのルート情報をせ亭する場合は、Route::get( ‘アドレス’, ‘コントローラ名’); で設定が可能で、アクション名が不要となります。

created by Rinker
PHPフレームワークのロングセラー定番解説書が、新バージョン対応で改訂! 本書は、Laravelのインストールから、フレームワークの中心になるModel-View-Controller(MVC)の使い方、開発に役立つ各種機能をわかりやすく解説した入門書です。
created by Rinker
PHPフレームワーク
『PHPフレームワークLaravel入門』(青本)を読み終わった方にお勧め!「もっと知りたかったこと」を本書で詳細に解説!PHPでWebアプリケーションを開発するフレームワークには種々ありますが、圧倒的人気ナンバーワンはLaravel!本書は、2017年9月刊行の大好評『PHPフレームワークLaravel入門』を補足する続編。読者の「これも知りたかった!」という声に応えました!

コメントする

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)