(!) Примеры и описание для более новой версии фреймворка HLEB2 могут отличаться от приведенных в тексте.
В некоторых случаях, особенно когда проект большой, а к URL-адресам не предъявляется особых требований, можно настроить соответствие для маршрутов, при котором маршрутизатор автоматически будет находить нужный контроллер и в нём метод. Для расширения доступных вариантов семантического URL, попросту добавления новой страницы, достаточно создать класс контроллера в папке. Такой вариант есть, к примеру, во фреймворке Yii.
При задании в роутинге одного правила для раздела 'api' (таких разделов может быть несколько), нужно определить его в файле маршрутизации один раз.
Route::prefix('/api/')->getGroup();
Route::get('{controller}/{method}/')->module('api', '<controller>Controller@action<method>');
Route::endGroup();
Теперь все запросы с начальным префиксом /api/ направлены в папку /modules/api/. Значения из URL подставляются в шаблон и, если он найден, вызывается нужный метод контроллера. Если создать следующую иерархию папок и файлов в modules:

Сами файлы:
<?php
// Файл /modules/api/BoxController.php
namespace Modules\Api;
class BoxController extends \MainController
{
public function actionGet() {
return view('box/default', ['action' => 'get']);
}
public function actionUpdate() {
return view('box/default', ['action' => 'update']);
}
}
<?php
// Файл /modules/api/SphereController.php
namespace Modules\Api;
class SphereController extends \MainController
{
public function actionGet() {
return view('sphere/default', ['action' => 'get']);
}
public function actionUpdate() {
return view('sphere/default', ['action' => 'update']);
}
}
Контент в обоих файлах default.php одинаков:
<?php
/** @var string $action */
echo json_encode(['action' => $action]);
Теперь по следующим путям в URL (запрос - ответ) видно соответствие:
- /api/sphere/get - {"action":"get"}
- /api/sphere/update - {"action":"update"}
- /api/box/get - {"action":"get"}
- /api/box/update - {"action":"update"}
По образу и подобию Yii:

Единственное структурное отличие здесь может быть в том, что контроллеры находятся в корне целевой папки, в данном случае api, backend или frontend, а не в папке controllers, как во фреймворке Yii.
