背景
最近Laravelで開発をすることが多いのですが、レビューでURLを直書きしないように複数回指摘を受けました。
そしてその修正をする中で学んだURLの取得方法を紹介します。
サイト内のURLを取得したい
Laravelで定義したルートにはnameメソッド
で名前をつけることができます。
// 名前付きルート
Route::get('/user/profile', function () {
})->name('profile');
routeメソッドを使えばURLを以下のように生成することができ、とても便利です。
<a href="{{ route('profile') }}">プロフィールへ</a>
URL直書きで書いても動作自体は変わりませんが、URLのパスを修正したい時に一つ一つ変更する必要がありとても手間がかかります。名前付きルートであれば変更箇所が1つになって楽ですよね。
外部サイトのURLを取得したい
外部のページに飛ばしたい時は、基本的にURL直書きで問題無いと思います。
<a href="https://qiita.com/">Qiitaトップページへ</a>
ただ、複数回同じURLを使う場合はLaravelヘルパー関数を自作して外部のURLを返すメソッドを作成しましょう。
こういう細かい共通化が後々の自分を楽にしてくれます!
URLを加工して取得したい
URLを加工して取得する際に便利なのがPHPのpathinfo
メソッドです。
pathinfoの使い方
<?php
$path_parts = pathinfo('/www/htdocs/inc/lib.inc.php');
echo $path_parts['dirname'], "\n";
echo $path_parts['basename'], "\n";
echo $path_parts['extension'], "\n";
echo $path_parts['filename'], "\n";
?>
pathinfoメソッドは引数に指定したURLパスを加工した結果を連想配列で受け取ることができます。
- dirname: ディレクトリのパス
- basename: ファイル名と拡張子
- extension: 拡張子
- filename: ファイル名
上記の4つの要素を全て返すので、必要な要素を指定して使用します。
※日本語などの文字が含まれる場合は文字化けを起こす可能性があるのでsetlocale
でロケール情報を指定する必要があります。
まとめ
ここまでLaravelでURLを取得する方法を紹介してきました。いかがだったでしょうか?
この記事がLaravelの理解の手助けになれば幸いです!