【Laravel講座】コントローラ

コントローラ

前回は、ルーティングについて学習しました。

【Laravel講座】ルーティング

2019.06.13

今回は、コントローラについてです。

それでは見ていきましょう。



コントローラとは

Laravel のような、MVCフレームワークにおいて、モデルとビューの橋渡しをするような存在です。

コントローラを説明する前に MVCフレームワークについて少し触れておきます。

MVC とは

MVC は、Model View Controller の略です。

これは、アプリケーションの処理をこれら3つの要素の組合せで構築していく考え方です。

Model(モデル)
データ処理全般を担当する部分。データベースアクセスに関する処理全般など。
View(ビュー)
画面表示を担当する部分。表示に使われるテンプレートなど。
Controller(コントローラ)
全体の制御を担当する部分。プログラムの基本的な処理。

コントローラは、MVCフレームワークにおいて、基本となるものです。

これがないと処理そのものが実行できないので、Laravel の開発では、まずコントローラをつくるところから始まると理解してもらっても良いくらいです。

コントローラを作成する

コントローラは、artisan コマンドを使って作成することができます。

この artisan というのは、職人という意味です。

コマンドプロンプトを起動し、cdコマンドで laravelフォルダへ移動しましょう。

私と同様の設定で進めているのであれば、以下のコマンドを実行します。

cd C:\xampp\htdocs\laravel

そして 以下のコマンドを実行します。

php artisan make:controller TestController

TestController の部分がコントローラ名です。

コントローラ名は、〇〇Controller というように名前に Controller を付けたものが使われます。

これで、PHP のスクリプトファイルとしてコントローラが作成されます。

作成したコントローラの確認

作成したコントローラは、app\Http\Controllers にあります。

今回の場合は、TestController.php ファイルが作成されているはずです。

では、実際にテキストエディタで中身を見ていきます。

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class TestController extends Controller
{
    //
}

コントローラはクラスとして作成されます。

extends というキーワードは、このブログで解説していなかったかもしれませんが、継承のことです。

つまり、Controllerクラスを継承して、TestControllerクラスが作成されているということです。

オブジェクト指向についての知識が不安な方は下記記事をご参照ください。

【PHP講座】オブジェクト指向とは

2019.05.18

namespace は、名前空間でこのクラスはここに配置されていますということ。

use は、Request というクラスをインポートしています。

作成したコントローラにアクションを追加する

現在、TestControllerクラスには、Controllerクラスを継承しただけで何も記述されていないので、アクションを追加します。

アクションは、メソッドとして追記していきます。

簡単なもので適当に下記のようなメソッド(アクション)を追記します。

public function index(){
  return 'TestController';
}

ルート情報の追加

ルーティングで紹介した、routesフォルダの Web.php に以下の内容を追加します。

Route::get('test', 'TestController@index');

前回、関数を指定した部分は今回、コントローラが指定されています。

コントローラ名@アクション名

といった書き方で第1引数で指定されたアドレスにアクセスすると、第2引数に指定されたコントローラのアクションが実行されるというわけです。

それでは、試しにブラウザで下記アドレスへアクセスします(XAMPP で Apache を忘れずに起動させましょう)。

localhost/laravel/public/test

すると下記のように表示されるはずです。

コントローラ

最後に

いかがでしょうか。

PHP講座でオブジェクト指向について、以前ざっくりと紹介したのですが、今回のような例がわかりやすかったかもしれません。

つまり、Controllerクラスの細かい内容がわからなくてもコントローラを作成することができるということです。

次回は、View(ビュー)について。

【Laravel講座】ViewとBlade

2019.06.16

最初に紹介した Blade(ブレード)というテンプレートについてもふれていこうと思っています。