Rudra Framework
Добавление Middleware:
php rudra create:middlewareКраткий вариант:
php rudra cr:midEnter middleware name: bar
Enter container: webРезультат:
<?php
namespace App\Containers\Web\Middleware;
use Rudra\Router\MiddlewareInterface;
use Rudra\Router\RouterFacade as Router;
class BarMiddleware implements MiddlewareInterface
{
public function __invoke($middlewares)
{
dump(__CLASS__);
$this->next($middlewares);
}
public function next(array $middlewares): void
{
Router::handleMiddleware($middlewares);
}
}В случае если в цепочке нет последующих элементов, метод next необязателен:
<?php
namespace App\Containers\Web\Middleware;
use Rudra\Router\MiddlewareInterface;
class BarMiddleware implements MiddlewareInterface
{
public function __invoke($middlewares)
{
dump(__CLASS__);
}
}Добавление Middleware в аннотации к контроллеру:
/**
* @Routing(url = '')
* @Middleware(name = 'App\Middleware\BarMiddleware')
*/
public function index()
{
}Добавление Middleware в аннотации к контроллеру для вызова после контроллера:
/**
* @Routing(url = '')
* @AfterMiddleware(name = 'App\Middleware\BarMiddleware')
*/
public function index()
{
}Для добавления параметров необходимо указать в контроллере:
* @Middleware(name = 'App\Containers\Web\Middleware\BarMiddleware', params = {int : '456'})или
* @AfterMiddleware(name = 'App\Containers\Web\Middleware\BarMiddleware', params = {int : '456'})А также добавить в метод Middleware __invoke($middlewares, $params) например:
<?php
namespace App\Containers\Web\Middleware;
use Rudra\Router\MiddlewareInterface;
use Rudra\Router\RouterFacade as Router;
class BarMiddleware implements MiddlewareInterface
{
public function __invoke($middlewares, $params)
{
dump(__CLASS__);
dump($params);
}
}Также можно вызвать Middleware используя фасад:
use Rudra\Router\RouterFacade as Router;
use App\Containers\Web\Middleware\BarMiddleware;Например:
/**
* @Routing(url = '')
* @AfterMiddleware(name = 'App\Middleware\BarMiddleware')
*/
public function index()
{
Router::handleMiddleware([[BarMiddleware::class, ['int' => 456]]]);
}