些細な事ですが、気になったので調べてみました。
public function getIndex()
{
return redirect()->to('hoge');
}
今まで何となくこっちを使っていましたが、
public function getIndex()
{
return redirect('hoge');
}
こっちでも問題なく動作するのでredirectヘルパーの実装について調べてみました。
if (!function_exists('redirect')) {
/**
* Get an instance of the redirector.
*
* @param string|null $to
* @param int $status
* @param array $headers
* @param bool $secure
* @return \Illuminate\Routing\Redirector|\Illuminate\Http\RedirectResponse
*/
function redirect($to = null, $status = 302, $headers = [], $secure = null)
{
if (is_null($to)) {
return app('redirect');
}
return app('redirect')->to($to, $status, $headers, $secure);
}
}
どうやら引数が空だとインスタンスを呼び出してくれるみたいです。
ドキュメントにもそう書いてありましたw
呼び出されるインスタンスのapiはここ
toメソッドの実装は以下の通り。
/**
* Create a new redirect response to the given path.
*
* @param string $path
* @param int $status
* @param array $headers
* @param bool $secure
* @return \Illuminate\Http\RedirectResponse
*/
public function to($path, $status = 302, $headers = [], $secure = null)
{
$path = $this->generator->to($path, [], $secure);
return $this->createRedirect($path, $status, $headers);
}
redirect('hoge')
とredirect()->to('hoge')
は同じ。
単純にリダイレクトだけならredirect('hoge')
、フラッシュデータを持たせたり、コントローラーのメソッドにリダイレクトさせたい時などは空でインスタンスを返すredirect()
を使う。
# 所管
Laravel使い始めた頃から染み付いて無意識にかいているコードの実装は一度くらい確認しようと思ったφ(..)
関連書籍