2017 © Pedro Peláez
 

library php-simple-router

Simple router compatible with the PSR-7

image

alexpts/php-simple-router

Simple router compatible with the PSR-7

  • Sunday, April 17, 2016
  • by alexpts
  • Repository
  • 1 Watchers
  • 3 Stars
  • 26 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 1 Open issues
  • 3 Versions
  • 0 % Grown

The README.md

php-simple-router

phpunit codecov Simple router compatible with the PSR-7, (*1)

Роутер предназначен для передачи управления обработчику запроса по входному http запросу. Весь роутинг делиться на небольшие компоненты, которые занимаются определенной задачей., (*2)

Router

Объект, который храни в себе путь/регулярку и ряд ограничений на http метод или переменную запроса, а также обработчик, который нужно вызвать для этого пути., (*3)

$route2 = new Route('/blog/{id}/', $endPoint2, ['id' => '\d+']);

$route = new Route('/{lang}/users/{id}/{action}/', $endPoint, [
    'lang' => 'ru|en',
    'action' => '[a-z0-9_]+',
    'id' => '\d+',
], Route::ONLY_XHR);

CollectionRoute

Объект для работы с коллекцией роутов. Роуты добавляются в коллекцию роутов с определенным приоритетом. Метод getRoutes возвращает массив всех роутов отсортированных по приоритету., (*4)

Matcher

Объект осуществляет поиск активного роута на основе соллекции роутов и текущего uri запроса. Простой поиск первого совпадения (наиболее приоритетного роута):, (*5)

$matcher = new Matcher();
$uri = '/profile/23/';
$routes = ...; // CollectionRoute instance
$endPoint = $matcher->matchFirst($routes, $uri); // IPoint instance

Можно получить все endPoint объекты, а не только первый. Метод match возвращает генератор. Через генератор достаются все объекты endPoint совпавших роутов., (*6)

 foreach ($matcher->match($routes, $uri) as $endPoint) {
    ...
 }

Брагодаря такой конструкции, можно выполнять маленькие обработчики друг за другом и др., (*7)

EndPoint

Все обработчики поддерживают интерфейс IPoint и служат для создания обработчика запроса с нужными параметрами и вызова обработчика с нужными параметрами. В комплекте идет ряд реализаций endPoint, которые могут помочь коротко и лаконично описать правила роутинга вашего приложения., (*8)

CallablePoint

Предназначен для вызова любого обработчика callable типа., (*9)

$endPoint = new Point\CallablePoint([
    'callable' => function () {
        return '404';
    }
]);
ControllerPoint

Явно задает класс контроллера и метод., (*10)

$endPoint = new Point\ControllerPoint([
    'controller' => 'CollectionRouteTest',
    'action' => 'action'
]);
DynamicController

Класс контроллера формируется динамически из переменной запрос :controller, которая является обязательной. Action берется из переменной запроса :action (по умолчанию index), (*11)

$endPoint = new Point\DynamicController([
    'prefix' => 'Demo'
]);
ControllerDynamicAction

Похож на DynamicController за исключением того, что контрллер указывается явно, а не берется динамически из переменной запроса :controller., (*12)

$endPoint = new Point\ControllerDynamicAction([
    'controller' => SomeController::class
]);
Создавайте новые endPoint

Охватить специфику каждого проекта очень сложно и это будет избыточно. Вы можете легко создать более специфичный класс типа IPoint на основе базовых классов или с нуля. Примером такого класса для своего проекта служит класс DynamicBundleController. Он призван показать как легко и просто делаются endPoint-ы под свой проект, если дефолтные по какой-то причине не подошли., (*13)

The Versions

17/04 2016

dev-master

9999999-dev https://github.com/alexpts/php-simple-router

Simple router compatible with the PSR-7

  Sources   Download

MIT

The Requires

  • php >5.5

 

The Development Requires

by Avatar alexpts

psr-7 router

06/01 2016

0.0.2

0.0.2.0 https://github.com/alexpts/php-simple-router

Simple router compatible with the PSR-7

  Sources   Download

MIT

The Requires

  • php >5.5

 

The Development Requires

by Avatar alexpts

psr-7 router

13/12 2015

0.0.1

0.0.1.0 https://github.com/alexpts/php-simple-router

Simple router compatible with the PSR-7

  Sources   Download

MIT

The Requires

  • php >5.5

 

The Development Requires

by Avatar alexpts

psr-7 router