プログラミング学習やフリーランスエンジニア情報を発信していきます。現役フリーランスエンジニア2人で運営してます!

  1. バックエンド

Laravelのコントローラ(Controller)を理解して使ってみよう!

最終更新日:2019/04/02

はじめに

本記事では、Laravelのコントローラとは何かをわかりやすく解説します。

以下の記事の続きです。まだ読んでいない方はぜひご一読ください!

初心者の方でもLaravelの動作環境を簡単に作れるWINDIIオリジナルのソースコードを用意したので、実際に動かして学ぶとより深く理解できるようになります!

以下の記事を参考にご活用ください。

Laravelのコントローラってなに?

Laravelのコントローラは、ユーザからのリクエストがルーティングによって振り分けられた後に通る場所で、最終的にビュー(見た目)やデータ(Jsonなど)を返す処理を担当します。

例えばブログシステムの場合を考えてみましょう。

ユーザが投稿IDが10番のブログ記事を見たいとします。

ユーザがhttp://example.com/posts/10 にアクセスすると、Laravelのルーターがブログ投稿関連の処理を担当するコントローラ(PostControllerとします)を見つけ出し、

「投稿IDが10番の投稿をユーザが欲しがってるのでください!」

と依頼します。

コントローラはそれに沿って他の担当者(他の章でご紹介します)に依頼しながら、最終的に投稿IDが10番のビュー(見た目)を生成して返します。

コントローラは、ルーティングの後の具体的な処理の起点と考えるとわかりやすいと思います。

コントローラを作ってみよう

まずはコントローラを作成してみましょう。

以下の処理はWINDIIのLaravel動作環境を使ってる場合実行してください。

docker-compose exec app bash

以下の処理を実行して、Laravelのコントローラを作成します。

php artisan make:controller PostController

実行完了したら、app/Http/Controllers 以下のディレクトリをみてください。
PostController.phpというファイルが生成されているはずです。

コントローラに限らず、Laravelではあらゆるファイルをコマンドで生成できるようになっているので、積極的に使っていきましょう!

コントローラを書いてみよう

先ほど作成したPostController.php の中身を書いていきます。

app/Http/Controllers/PostController.php

<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

class PostController extends Controller
{
    /**
     * 指定された投稿のIDを表示
     *
     * @param  int  $id
     * @return String
     */
    public function show($id)
    {
        return $id.'番の投稿';
    }
}

次にルーティングを定義しましょう。コントローラの処理とルーティングをひもづけるためには以下のようにします。

routes/web.php

Route::get('posts/{id}', '[email protected]');

定義し終えたら、http://localhost:8000/posts/10 にアクセスしてみてください。

10番の投稿 と表示されているのがわかります。

ルーティング定義で posts/{id} にGETアクセスがあったときにPostControllerのshowメソッドを呼び出すように定義しています。

そして具体的な処理自体はPostControllerのshowメソッドに記述します。

例の場合では、○番の投稿という文字列を返しているので、ブラウザには10番の投稿と表示されます。

この例ですと、ルーティングで以下のように書いても同じ結果が得られます。

routes/web.php

Route::get('posts/{id}', function($id) {
  return $id.'番の投稿';
});

このような単純な例では、わざわざルーティングとコントローラを分けて記述するメリットは少なく思えます。

しかし、実際のアプリケーション開発では、処理が膨大になることも少なくないので、ルーティングとコントローラを分離して見通しよくアプリケーションを実装していくのが大切です。

以上でコントローラについては終わりです。

次の章はBlade(ブレイド)についてです!

The following two tabs change content below.

riri

25歳。 Twitter:りりー@ryudoi1 // windii socialというslackチャンネルで質問や雑談等受け付けてるので気軽に参加してください!(もちろん無料です) フリーランスになるまでの過程は こちら

関連記事

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

PAGE TOP