Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Серьезный выбор был между двумя микро-фреймворками: Slim и Zend.
Затем я переключился на Slim. Его внедрение в проект заняло меньше дня. Выбор контроллеров (старого и новго образца) был реализовано через middleware. На Slim и остановился. В далеких планах перейти на pipeline с PSR-15 middleware.
<?php
// Middleware, решающее какой контроллер нужно выполнить.
class ControllerDispatcherTypeMiddleware
{
// Была написана обертка над старым роутингом.
public function __construct(LegacyControllerDispatcher $legacyControllerDispatcher)
{
$this->legacyControllerDispatcher = $legacyControllerDispatcher;
}
public function __invoke($request, $response, $next)
{
$routeInfo = $request->getAttribute('routeInfo');
// Если роут не найдем в роутинге приложения Slim, тогда отправляем запрос в старый обработчик.
if ($routeInfo[0] === \FastRoute\Dispatcher::NOT_FOUND) {
// Вызов "старых" контроллеров
$this->legacyControllerDispatcher->dispatch();
}
// Стандартная работа Slim приложения
return $next($request, $response);
}
}
//Регистрируем выбор типа контроллеров первым Middleware в приложении
$app = new \Slim\App();
$app->add(ControllerDispatcherTypeMiddleware::class);
Серьезный выбор был между двумя микро-фреймворками: Slim и Zend.
Silex не рассматривался?
Опыт внедрения PSR стандартов в одном легаси проекте