Laravelコントローラーには、データベースレコードをフェッチすることから始まり、データが見つかったかどうかを確認した後、ビューのレンダリングを続行するか、データがない場合は404ページに移動するメソッドがいくつかあります。
次に例を示します。
<?php
function get_show_user($id)
{
$user = static::get_user($user_id);
if (!$user) {
return Response::error('404', static::$some_common_error404_message);
}
return View::make('users.show_readonly_user_data')->with('user', $user);
}
function get_edit_user($id)
{
$user = static::get_user($user_id);
if (!$user) {
return Response::error('404', static::$some_common_error404_message);
}
return View::make('users.display_edit_user_form')->with('user', $user);
}
if (!$user)
これらのメソッドがすべて同じことをしている場合でも、これらのメソッドでステートメント全体を繰り返しています。
私はむしろこのようなことをしたいです:
function get_show_user($id)
{
$user = Users::find($id);
static::go404_if_null($user);
return View::make('users.show_readonly_user_data')->with('user', $user);
}
function get_edit_user($id)
{
$user = Users::find($id);
static::go404_if_null($user);
return View::make('users.display_edit_user_form')->with('user', $user);
}
そのようなDRY機能を実装するための最良の方法は何でしょうか?
明らかに、単純なreturn Response::error('404')
ものは、そのメソッドからのみ返されるため、共通の存在チェッカーメソッドでは機能しません。
Event::fire('404')
トリガーされたメソッドを終了しないため、anも理想的ではないようです。
ここではおそらく例外を使用する必要がありますが、これについて、またはLaravelでどのように行うべきかについてはわかりません。コントローラの404例外をどこでキャッチする必要がありますか?