(Laravel5.6)コントローラの引数を任意の順番で渡したい

9月に入社したエンジニアの山村です。よろしくお願いいたします!
Laravelのコントローラの引数を、任意の順番で渡すルーティング方法を調査したので投稿します。

例として、以下のようなコントローラと、ルーティングを定義しています。

// コントローラ
class HogeController extends Controller
{
    public function show($param_a, $param_b)
    {
        // パラメータをログ出力
        info("param_a:" . $param_a . ", param_b:" . $param_b);
    }
}
// ルーティング
Route::prefix('hoge')->group(function () {
    Route::get('/{param_a}/{param_b}', 'HogeController@show');
});

/hoge/A/BのようなURLでアクセスした際、
以下がログに出力されます。

param_a:A, param_b:B


詳細は割愛しますが、上記URLのパラメータの順番を変えたURLでアクセスしたい、という要望がありました。
/hoge/B/A

試しにルーティング設定を以下に書き換えてみました。

// ルーティング
Route::prefix('hoge')->group(function () {
//    Route::get('/{param_a}/{param_b}', 'HogeController@show');
    Route::get('/{param_b}/{param_a}', 'HogeController@show');
});

パラメータの順番を変えたURL(/hoge/B/A)でアクセスしたところ、以下のログが出力されました。

// 出力されたログ
param_a:B, param_b:A

// >こうなってほしい
// param_a:A, param_b:B

ルーティングで指定しているパラメータは、名称に関係なく、あくまで順番にコントローラへ渡されるようです。


調査した結果、以下のようなルーティング設定を行うことで、
コントローラに渡す引数の順番を変更できることがわかりました。

// ルーティング
Route::prefix('hoge')->group(function () {
	Route::get('/{param_b}/{param_a}', function($param_b, $param_a) {
		return App::call('App\Http\Controllers\HogeController@show', ['param_a' => $param_a, 'param_b' => $param_b]);
	});
});

もっとスマートな方法があるかもしれませんが、参考になれば幸いです。