本記事では、
Laravelを学び始めてまず最初に学ぶ
「ルーティング」についてのメモ書き
Laravelのルーティングとは

laravelのルーティングとは、簡単に言うと、
特定のアドレスにアクセスしたときに、そのアドレスに割り当てられたプログラムが実行される機能のこと。
通常のPHPのルールとの違い
通常のPHPでは、ドキュメントルート直下にある「test.php」にwebからアクセスする場合、
例えば「https://hara-chan.com/test.php」というふうにアクセスする。
しかし、laravelの場合、「https://hara-chan.com/test.php」にアクセスしたら、
「https://hara-chan.com/test.php」に割り振られたプログラムを実行するよ、という考え方をする。
つまり、「◯◯にアクセスしたら、△△を実行してね」という設定をするのがルーティングだ。
Laravelのルーティングで覚えておくべき階層
laravelのルーティングを理解するのに覚えなければいけない階層は、
Laravelアプリケーション最上位層の「routes」ディレクトリだ。
app
artisan
bootstrap
composer.json
composer.lock
config
database
package-lock.json
package.json
phpunit.xml
public
resources
routes ★Laravelのルーティングで覚えておくべきディレクトリ
server.php
storage
tests
vendor
webpack.mix.js
ルーティングは、「routes」直下の「web.php」に記載する
laravelのディレクトリ構成でも最上位に位置する
「routes」ディレクトリ。
この直下に属する、
「web.php」というファイルにルーティング情報を記載していく。
- routes
|
∟ web.php ★ルーティング情報を記載していく。
「routesのweb.phpといったらルーティング」。と言う風に覚えてしまおう。
ルーティングの基本的な書き方
ルーティングの基本的な書き方は下記(web.php)
Route::メソッド(‘パス’, function() {
return 戻り値;
});
上記を詳しく説明すると、、
メソッド
getかpostを指定できる。
「〇〇にアクセスしたら、△△のプログラムを実行する」際に、getで実行するのかpostで実行するのかの違いとなる
パス
ドキュメントルートからのパスを書く。
「〇〇にアクセスしたら、△△のプログラムを実行する」の〇〇の部分。
戻り値
実行したいプログラムを指定する。
「〇〇にアクセスしたら、△△のプログラムを実行する」の△△の部分。
ルーティングのルールメモ
基本的なlaravelのルーティングの規則は下記。
パスには変数を指定可能
パスには変数を指定可能。
指定には{〇〇〇}というふうに{}で値を囲んであげる。
そして変数は、実行プログラムに変数として渡してあげることが可能。
web.phpに以下を書く。戻り値には指定した変数を返すように指定。

ブラウザから「http://127.0.0.1:8000/hara-chan-dayo!」とアクセス

hara-chan-dayo!と表示された。
パスの変数の指定を任意にする
変数の指定がされていたら、基本的に変数は「必須」。
指定しないでアクセスするとエラーになる。
しかし、{〇〇?}のように、「?」を入れることで、変数の指定は任意になる。
そして引数として受け取る側にはデフォルト値が指定でき、変数が渡ってこなかったときの値をあらかじめ指定できる。

指定した場合

指定しなかった場合(default)

ルーティングの順番に注意
ルーティングの順番には注意。
ルーティングは上から順番に調べられていって、当てはまったルーティングのタイミングでそのルーティングが実行される。

そのため上記の書き方だと、
「ぜったいとどかないところ」というルーティングには絶対に届かない。
なぜなら、
一つ上のルーティングで「unreach」というパスは{msg]に拾われてしまい、
そちらのルーティング(画面に’unreach’と表示)が実行されてしまうからだ。
だから、Laravelのルーティングを記述する際は、
基本は許容範囲の広いルーティングは後ろの方に記述する。
今回の場合、{msg}のルーティングは、unreachのルーティングの後に記載すれば解決する。
Laravel 関連記事
https://readouble.com/laravel/8.x/ja/routing.html
「getまたはpostのメソッドいづれかの方法で、
〇〇にアクセスしたら、△△のプログラムを実行する」