В вашем файле маршрутов добавьте что-то вроде этого,
Route::get('/something/{func}', 'SomeController@functionRoute');
Где something
- это тот путь, который вы хотите использовать, SomeController
- контроллер с 20 используемыми функциями, а functionRoute
- действие, которое мы собираемся выполнить.
Затем в вашем контроллере сделайте такую функцию,
public function functionRoute($func)
{
return $this->$func();
}
Это сделает так, что всякий раз, когда кто-то просматривает /something/*
на вашем сайте, он будет выполнять имя функции в конце. Поэтому, если вы перейдете к /something/getFamilyTypes
, он запустит вашу функцию getFamilyTypes
.
Это не особенно безопасно. Если вы сделаете это, пользователь сможет запустить любой из методов контроллера. Вы можете создать черный список, как этот.
public function functionRoute($func)
{
$blacklist = [
'secret',
'stuff',
];
return in_array($func, $blacklist) ? redirect('/') : $this->$func();
}
Или вы могли бы создать белый список, подобный этому,
public function functionRoute($func)
{
$whitelist = [
'getFamilyTypes',
'otherUserFriendlyStuff',
];
return in_array($func, $whitelist) ? $this->$func() : redirect('/');
}