Автороутер по методу и классу

Создаётся через метод autoByMethod() в родительском роутере.

Как это работает

Url после базового url автороутера, разбивается по / на массив частей

Последняя часть будет преобразовываться в имя метода

$methodName = $methodPrefix + последняя часть url + $methodPostfix

Предпоследная часть будет преобразовываться в имя класса

$className = $classPrefix + предпоследня часть url + $classPostfix

В преобразование имени класса будет передано index, если предпоследней части нет

$className = $classPrefix + index + $classPostfix

Если задать classCustom($classCustom), то будет вызваться метод из этого класса, минуя преобразование имени класса из url.

$className = $classCustom

Пример:

$router->autoByMethod('/api/', function () {
    $this->classPrefix('Controllers\\Api\\')->classPostfix('Controller')
    ->methodPostfix('Action');
});

Контекст $this внутри функции будет содержать новый экземпляр класса Evas\Router\Routers\AutoRouterByClassMethod

  • /api/user/get - вызовет Controllers\Api\UserController->getAction()
  • /api/user/save - вызовет Controllers\Api\UserController->saveAction()
  • /api/admin/user/save - вызовет Controllers\Api\Admin\UserController->saveAction()
  • /api/user - вызовет Controllers\Api\IndexController->userAction()
  • /api/ - вызовет Controllers\Api\IndexController->indexAction()

Доступны все базовые настройки, помимо этого есть дополнительные методы:

classPrefix

Устанавливает префикс класса

АргументТипОписание
1stringпрефикс класса
$router->classPrefix('Api\\V1\\Users\\');

classPostfix

Устанавливает постфикс класса

АргументТипОписание
1stringпостфикс класса
$router->classPostfix('Controller');

classCustom

Устанавливает кастомное имя класса.

Если задан, будет вызваться метод из этого класса, минуя преобразование имени класса из url.

АргументТипОписание
1stringкастомное имя класса
$router->classCustom(\Controllers\Api\ApiController::class);

methodPrefix

Устанавливает префикс метода

АргументТипОписание
1stringпрефикс метода
$router->methodPrefix('auto');

methodPostfix

Устанавливает постфикс метода

АргументТипОписание
1stringпостфикс метода
$router->methodPostfix('Action');

Константы для свойств по умолчанию

EVAS_AUTOROUTER_CLASS_PREFIX

Устанавливает префикс класса по умолчанию.

Будет перезаписан функцией classPrefix()

if (!defined('EVAS_AUTOROUTER_CLASS_PREFIX'))
    define('EVAS_AUTOROUTER_CLASS_PREFIX', '');

EVAS_AUTOROUTER_CLASS_POSTFIX

Устанавливает постфикс класса по умолчанию.

Будет перезаписан функцией classPostfix()

if (!defined('EVAS_AUTOROUTER_CLASS_POSTFIX'))
    define('EVAS_AUTOROUTER_CLASS_POSTFIX', '');

EVAS_AUTOROUTER_METHOD_PREFIX

Устанавливает префикс метода по умолчанию.

Будет перезаписан функцией methodPrefix()

if (!defined('EVAS_AUTOROUTER_METHOD_PREFIX'))
    define('EVAS_AUTOROUTER_METHOD_PREFIX', '');

EVAS_AUTOROUTER_METHOD_POSTFIX

Устанавливает постфикс метода по умолчанию.

Будет перезаписан функцией methodPostfix()

if (!defined('EVAS_AUTOROUTER_METHOD_POSTFIX'))
    define('EVAS_AUTOROUTER_METHOD_POSTFIX', '');