PHP

Laravel入門#01(ルーティング)

こんにちは、cocomaruです。

本記事はPHP人気フレームワークのLaravelの仕組みを解説する記事になります。

Laravelとはどういったフレームワークか?勉強方法は?という疑問に関しては以下の記事をお読みいただければと思います。

PHP/Laravelを学習する上でおすすめな方法(本、プログラミングスクールや動画学習等)人気フレームワークLaravelを学習しよう PHPは、JavaやC#などのプログラミング言語と比べて簡単に使えるWebプログラミング...

それでは早速になりますが、Laravelのルーティングという仕組みからご紹介します。

ルーティングについて

Laravelには「特定のアドレスにアクセスした場合、どの処理を呼び出して実行するか」を制御する仕組みがあり、それを「ルーティング」と呼びます。

このルーティングの仕組みを知っておくとLaravelを使って、どのように処理をさせればいいのかの、流れがわかるようになるため、しっかりと理解していきましょう。

「routes」ディレクトリについて

ルーティングについての設定に関しては、プロジェクトディレクトリ直下にある「routes」ディレクトリの中のファイル群が該当します。

api.php アプリケーションのAPIのルーティングを登録します。「api」ミドルウェアグループが割り当てられます。
channels.php ブロードキャストチャンネルを扱うためのルーティングファイルになります。
console.php コンソールプログラムを扱うためのルーティングファイルになります。
web.php WEBページとしてアクセスするためのルーティングを登録します。

いくつかありますが、今回は「routes/web.php」を扱っていきます。

ルーティングを設定してみよう。

それではweb.phpを開いてみてください。

Laravel5.6だと中身は以下のようになっています。

routes/web.php
//...
Route::get('/', function () {
    return view('welcome');
});
//...

これはURLのドキュメントルートにアクセスした場合、「resources/views/welcome.blade.php」をレンダリングしたものを表示するという処理になっています。

viewルート

上記のルート定義は、viewルートを使っても代替可能です。

routes/web.php
Route::view('/', 'welcome');

中身を変更してみよう

ではソースの中身を以下のように変更してみましょう。

routes/web.php
Route::get('/', function () {
    return 'Hello World';
});

変更したら、ブラウザで「http://localhost:8000/」とURLをうってアクセスしてみてください。
「Hello Wolrd」とテキストが表示されたかと思います。

ルーティングを追加してみよう

では、次にルーティングを追加してみましょう!

routes/web.php
// 追加
Route::get('add', function () {
    return 'Add Page';
});

上記のように追加したら、「http://localhost:8000/add」へアクセスしてみましょう。
今度はreturnの返却値の通り、「Add Page」と表示されたかと思います。

このようにシンプルな書き方で、ルーティングを設定することができます^^

リダイレクトルート

Laravelではリダイレクトの機能も備わってます。

routes/web.php
//「http://localhost:8000/old」へアクセスすると、「http://localhost:8000/new」へリダイレクトされる
Route::redirect('/old', '/new', 301);

ルートパラメータ

URLのセグメントから値を取り出す方法についてみていきます。

例えば、「/posts/1」というアドレスでアクセスされた際、「1」の数字を取り出して処理したい時、以下のように定義します。

routes/web.php
Route::get('posts/{post}', function ($postId) {
    return 'post id is '. $postId;
});

「http://localhost:8000/posts/1/」でアクセスすると、「1」の値が表示されるかと思います。

複数のルートパラメータ値も取得できる

またルートパラメータは複数設定できます。

routes/web.php
Route::get('posts/{post}/comments/{comment}', function ($postId, $commentId) {
    return 'post id is '. $postId . ' comment id is ' . $commentId;
});

任意のルートパラメータ

中には必須ではないルートパラメータも指定したい場合があるかと思いますが、その場合は「{name?}」とパラメータの末尾に「」をつけてください。

routes/web.php
Route::get('user/{name?}', function ($userName='no name') {
    return 'Hello '. $userName;
});

正規表現制約

ルートにwhereメソッドを使って、フォーマットの制約をかけることもできます。

routes/web.php
// nameは英字のみ
Route::get('user/{name}', function ($name) {
//
})->where('name', '[A-Za-z]+');

// idは0-9の数字のみ
Route::get('user/{id}', function ($id) {
//
})->where('id', '[0-9]+');

// idは数字、nameは英字のみ
Route::get('user/{id}/{name}', function ($id, $name) {
//
})->where(['id' => '[0-9]+', 'name' => '[a-z]+']);

これまで紹介した制御以外に、ルーティングに対して名前を設定できたり、ミドルウェアの設定と様々な設定が可能ですので、
気になる方は公式サイトを参照してください。

以上でルーティングの基本的な使い方の説明を終わります。

ここまでお読み頂きありがとうございました!

Laravel入門#02(コントローラ)今回はLaravelを使うにあたり重要な要素である「コントローラ」について説明・使用をしていきたいと思います。 MVC(Model V...