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

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

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

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

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

С помощью classMethod() задается имя метода $classMethod

Пример:

$router->autoByClass('/api/v1/user/', function () {
    // настройка вложенного автороутера через контекст $this
    $this->classPrefix('Api\\V1\\User\\') // Префикс класса
    ->classPostfix('Action') // Постфикс класса
    ->classMethod('run'); // Вызываемый метод
});

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

  • Запрос /api/v1/user/save будет вызывать (new Api\V1\User\SaveAction)->run()
  • Запрос /api/v1/user/list будет вызывать (new Api\V1\User\ListAction)->run()

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

classPrefix

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

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

classPostfix

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

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

classMethod

Устанавливает вызываемый метод класса

АргументТипОписание
1stringимя метода
$router->classMethod('run');

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

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_CLASS_METHOD

Устанавливает вызываемый метод класса.

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

if (!defined('EVAS_AUTOROUTER_CLASS_METHOD'))
    define('EVAS_AUTOROUTER_CLASS_METHOD', 'auto');