Главное Авторские колонки Вакансии Образование
210 0 В избр. Сохранено
Авторизуйтесь
Вход с паролем

Кастомные типы в Mezon Router

Сомневаюсь, что эта фича будет широко востребована и толпы программистов ринутся писать кучу своих кастомных типов. Но дать людям такую возможность надо, поэтому погнали.
Мнение автора может не совпадать с мнением редакции

В одной из последних версий роутера такая возможность появилась. Давайте в качестве примера попробуем сделать катомный тип «дата».

Для этого создадим следующий простой класс:

class DateRouterType { /** * Method returns regexp for searching this entity in the URL * * @return string regexp for searching */ public static function searchRegExp(): string { return '([date:'.BaseType::PARAMETER_NAME_REGEXP.'])'; } }

Здесь у нас BaseType::PARAMETER_NAME_REGEXP это глобальная переменная, которая определяет из каких символов будет состоять название параметра:

  1. буквы a-z и A-Z
  2. 0-9
  3. а также символы _ и -

Теперь надо определить регулярку, с помощью которой будем парсить URL:

public static function parserRegExp(): string { // pretty simple regexp return '([0-9]{4}-[0-9]{2}-[0-9]{2})'; }

И теперь где-то в ваших файлах конфигурации надо написать следующее:

$router->addType('date', DateRouterType::class);

Теперь все готово для обработки роутов типа таких: /some-url-part/2020-02-02/ending-part/ /posts-for-2020-02-02/

Но будьте осторожны. Например, у вас есть следующие роуты:$router->addRoute('/posts-for-[date:posts-date]/', function(UserObject $userObject){ // some activities here }); $router->addRoute('/[s:some-url/', function(UserObject $userObject){ // some activities here });

Тут первый роутер будет использоваться для обработки УРЛа /posts-for-[date:posts-date]/

Что такое Mezon Router?

mezon/router это:

  1. фреймворк для роутинга со 100% покрытием кода;
  2. 10.0 баллов на scrutinizer-ci.com
  3. роутер является частью проекта Mezon

Репа на github.com: https://github.com/alexdodonov/mezon-router

Будет здорово, если вы поучаствуете в жизни проекта. Это может быть написание документации, рекомендации друзьям в социальных сетях, правка багов, рефакторинг, или даже запрос тикета на новую функциональность. В любом случае большое спасибо.

0
В избр. Сохранено
Авторизуйтесь
Вход с паролем