LoginSignup
1
1

More than 3 years have passed since last update.

Laravelで、view('target.view', ['id' => $id, 'name' => $name]) を少しでもスマートに書きたい

Posted at

はじめに

皆さんはLaravelライフをエンジョイしてますか?
私は職場でのLaravel歴が長いことから、公式ドキュメントに書いていないような方法で実装を勧めていることが多いです。
Laravel初心者の方には理解に苦しむようなコードを書くことも多く、普段からチームメンバの力量に合わせて適材適所で力を発揮しています。(キリッ)

さて、今回はLaravelでビューにパラメータを渡す際の小技を、初心者の方や使い慣れてきた方向けに紹介していきたいと思います。

公式ページに記載されているビューへのパラメータの渡し方

例1
// ビューへ渡すパラメータを事前に連想配列として準備し…
$user = \App\User::first();
$data['user'] = $user;

// ビューを指定する際に引数として渡す
return view('hello', $data);
例2
// ビューへ渡すパラメータを事前に準備し…
$user = \App\User::first();

// ビューを指定する際に連想配列として渡す
return view('hello', ['user' => $user]);

どうです?イケてますか?連想配列をわざわざ作るコードを書くのは辛いと思いますが…。
私の身の回りの開発者の中でも、特にPHP初心者の方はこの書き方で書いていることが多いです。
上記の例では$userのみのため、まだましな方だと思います。

でも過去には、以下のようなコードを書いていた人もチームメンバに遭遇したことがあります。

カオスコード1
$data['a'] = $a;
$data['b'] = $b;
$data['c'] = $c;
$data['d'] = $d;
$data['e'] = $e;

return view('hello', $data);
カオスコード2
return view('hello', [
    'a' => $a,
    'b' => $b,
    'c' => $c,
    'd' => $d,
    'e' => $e,
]);

いやだ!!、こんな書き方はしたくない!
そもそも変数名と同じキーを指定する連想配列を定義するなんてイケてない!

連想配列をわざわざ作るコードなんて書きたくない場合

compact関数を使うパターン
// ビューへ渡すパラメータを事前に準備し…
$user = \App\User::first();

// ビューのパラメータを指定するタイミングに一気に連想配列を作成する
return view('hello', compact('user'))

私の場合は上記のようにPHP標準のcompact関数を利用し、見るからにイケてないコードを意図的に排除しています。
このように書くことで少しはスッキリ感じないでしょうか?
それによりカオスコードが少しは許容できるような見た目になります。

許容できるようになったカオスコード2
return view('hello', compact('a','b','c','d','e'));

またビューのパラメータは連想配列で渡すことになってますが、実はオブジェクトを渡す方法もあります。
この方法については後日新しい記事として取り扱う予定です。

以上

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1