compact関数とは
変数名とその値から配列を作成する
ものらしいです。
laravel独自の関数ではなく、PHPの関数でした。
compact関数【PHP公式】
簡単に説明すると、
コントローラで受け取った値をビューへ受け渡す際、
compact関数を使うことで、よりスマートな記述をすることができるようになります。
実際の使い方
compact関数を使用する場合
public function index(Request $request) {
$trRecords = TrRecord::orderBy('tr_date', 'desc')->paginate(10);
return view('trrecords.index', compact('trRecords'));
}
compact関数を使用しない場合
public function index(Request $request) {
$trRecords = TrRecord::orderBy('tr_date', 'desc')->paginate(10);
return view('trrecords.index', ['trRecords' => $trRecords]);
}
やっていることは同じですが、
compact関数を使ってあげたときのほうがスマートな記述にすることができます。
今回は変数の数が1つだけだったのでそこまで冗長な感じのコードにはならなかったですが、
以下のように変数が増えていくとよりcompact関数を使ったほうが見やすいコードに仕上げることができるようになります。
public function test()
{
$test1 = 'test1';
$test2 = 'test2';
$test3 = 'test3';
$test4 = 'test4';
// viewの第2引数で配列を書いている。
return view('test', [
'test1' => $test1,
'test2' => $test2,
'test3' => $test3,
'test4' => $test4,
]);
}
public function test()
{
$test1 = 'test1';
$test2 = 'test2';
$test3 = 'test3';
$test4 = 'test4';
// compact関数だけで書いている。
return view('test', compact('test1', 'test2', 'test3', 'test4'));
}
ただ注意事項として、
viewの変数とcontrollerで定義した変数が同じ
となるため、
そこを変えたい場合はcompact関数を使用せずに記載するやり方になるかとおもいます。