Laravelでbladeに引数を渡すときの処理の違いについて調べた
はじめに
先日、後輩にBladeにdataを渡すとき、view関数の第2引数で渡す場合と、withメソッドを使って渡す場合の処理の違いについて質問されたので調べました。
せっかくだし忘れる前に記事にしておこうと思ったのが今回のモチベーションです。
調査結果
viewの第2引数に配列を渡してBladeに渡す場合
例
return view('template-name', [ 'products' => Product::all() ]);
調べた結果
こちらに関しては配列をviewInstance生成時に渡して、 Illuminate\View\View::__construct
の中で自身のメンバ変数 data
に渡してるだけっぽかった
withでdataをBladeに渡す場合
例
return view('template-name')->with('products', Product::all());
調べた結果
withに関しては、 viewのinstanceを生成したあと、インスタンス内部の関数を呼んで $this-data に値をセットしてるみたいだった
まとめ
つまり理由がなければどちらを使ってもよいって感じでした