Маршрутизация uri по зарание заданным маршрутам (роутам)
2 Примеры
2.1 Маршруты
Маршруты задаются с помощью класса PositiveCode\Routing\Route или метода PositiveCode\Routing\RouteCollection::addRoute()
// Массив роутов
$routes = [
// Роут с указанием имени, паттерна, контроллера
'home' => new \PositiveCode\Routing\Route('home', '/', 'PositiveCode\CMF\Controller@getHome'),
// Роут с указанием имени, паттерна, контроллера, методов запроса
'home' => new \PositiveCode\Routing\Route(
'home', '/', 'PositiveCode\CMF\Controller@getHome', ['GET', 'POST']
),
// Роут с указанием имени, паттерна, контроллера, метдов запроса, дополнительных параметров
'home' => new \PositiveCode\Routing\Route(
'home', '/', 'PositiveCode\CMF\Controller@getHome', ['GET', 'POST'], ['isHome' => true]
)
];
// C помощью метода PositiveCode\Routing\RouteCollection::addRoute()
$collection = new PositiveCode\Routing\RouteCollection();
// Маршрут с указанием имени, паттерна, контроллера
$collection->addRoute('home', '/', 'PositiveCode\CMF\Controller@getHome');
// Маршрут с указанием имени, паттерна, контроллера, методов запроса
$coolection->addRoute('home', '/', 'PositiveCode\CMF\Controller@getHome', ['GET', 'POST']);
// Маршрут с указанием имени, паттерна, контроллера, метдов запроса, дополнительных параметров
$collection->addRoute(
'home', '/', 'PositiveCode\CMF\Controller@getHome', ['GET', 'POST'], ['isHome' => true']
);
2.2 Коллекция маршрутов
Коллекция маршрутов создается с помощью класса PositiveCode\Routing\RouteCollection
// Создание экземпляра коллекции с массивом маршрутов
$collection = new PositiveCode\Routing\RouteCollection($routes);
// Добавление маршрута с помощью "магии" php
$coolection['home'] = new \PositiveCode\Routing\Route('home', '/', 'PositiveCode\CMF\Controller@getHome');
// Добавление маршрута с помощью метода PositiveCode\Routing\RouteCollection::addRoute()
$collection->addRoute('home', '/', 'PositiveCode\CMF\Controller@getHome');
// Получаем коолекцию маршрутов в виде массива
$collection->getCollection();
2.3.1 Старт роутинга отдельной библиотекой
// Иницилируем роутинг с заданной коллекцией, директорией кеша и пространством имен кеша
$routing = new PositiveCode\Routing\Routing(
$collection, 'rootpath/Application/Cache/ClassCache', 'Application\Cache\ClassCache'
);
// Обрабатываем маршрут запроса $_SERVER['REQUEST_URI'] = /
$data = $routing->match($_SERVER['REQUEST_URI'], $_SERVER['REQUEST_METHOD']);
// array(3) {'name' = 'home', 'handler' => 'PositiveCode\CMF\Controller@getHome', 'params' => [] }
var_dump($data);
2.3.2 Старт роутинга с помощью контейнера сервисов PositiveCode\ServiceLocator