1
2
3
4
'middleware' => true,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
* Example middleware closure
*
* @param $request PSR7 request
* @param $response PSR7 response
* @param callable $next Next middleware
*
* @return $response PSR7 response
*/
function ($request, $response, $next) {
$response->getBody()->write('BEFORE');
$response = $next($request, $response);
$response->getBody()->write('AFTER');
return $response;
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class ExampleMiddleware
{
/**
* Example middleware closure
*
* @param $request PSR7 request
* @param $response PSR7 response
* @param callable $next Next middleware
*
* @return $response PSR7 response
*/
public function __invoke($request, $response, $next)
{
$response->getBody()->write('BEFORE');
$response = $next($request, $response);
$response->getBody()->write('AFTER');
return $response;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class ExampleMiddleware
{
/**
* Example middleware PSR15
*
* @param $request PSR7 request
* @param callable $handler Next middleware
*
* @return $response PSR7 response
*/
public function process($request, $handler)
{
$response = $handler($request);
$response->getBody()->write('AFTER');
return $response;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/**
* Example middleware closure PSR15
*
* @param $request PSR7 request
* @param callable $handler Next middleware
*
* @return $response PSR7 response
*/
function ($request, $handler)
{
$response = $handler($request);
$response->getBody()->write('AFTER');
return $response;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
require __DIR__ .'/../vendor/ABC/ABC.php';
$config = require __DIR__ .'/resources/config.php';
$app = ABC::startApp($config);
// Добавляем middleware с помощью метода add()
$app->add(function ($request, $response, $next) {
$response->getBody()->write('BEFORE');
$response = $next($request, $response);
$response->getBody()->write('AFTER');
return $response;
});
$app->run();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
require __DIR__ .'/../vendor/ABC/ABC.php';
$config = require __DIR__ .'/resources/config.php';
$router = ABC::Router($config);
// Добавление middleware методом add() цепочкой
$router->get('/hello/{name}', function ($request, $response, $arg) {
$response->getBody()->write("Hello, ");
return $response;
})->add(new NameMiddleware);
$router->run();
///////////////////////////////////////////////////////
/**
* Класс миддлвара
*/
class NameMiddleware
{
public function process($request, $handler)
{
$response = $handler($request);
$name = $request->getAttribute('name');
$response->write("$name!");
return $response;
}
}
1
2
3
4
5
6
7
8
// Так
})->add(new NameMiddleware)->add(new SomeMiddleware);
// Либо так
})->add(['NameMiddleware', 'SomeMiddleware']);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$router = ABC::Router($config);
// Добавление middleware для нескольких маршрутов
$router->group('/hello', function () use ($router) {
$router->get('/hello/World', new HelloWorld);
$router->get('/hello/{name}', new HelloName);
})->add(new SomeMiddleware);
$router->run();
1 | add() | Добавляет мидлвары в очередь |
2 | group() | Группирует роуты для добавления мидлваров |
Добавляет в очередь мидлвары.
Метод добавит во внутреннюю очередь фреймворка один или несколько (массивом) middleware.public App::add ( $middleware ) | ||
$middleware | mix | Метод принимает параметром:
1. Валидный collback (замыкание или название функции) 2. Invokable class (объект или название класса, содержащего метод __invoke()) 3. Объект или название класса, отвечающего интерфейсу PSR-15 4. Массив, элементами которого являются вышеперечисленные аргументы в любых вариантах. |
return | object | Объект приложения |
---|
Группирует роуты.
Организует группу роутов, при отоработке любого из них, добавляет мидлвары.public App::group ( $rout, $collback ) | ||
$rout | string | Префикс маски роута, после которого организуется группа для добавления мидлваров |
$collback | mix | Сollback-функция, содержащая сгруппированные роуты. |
return | object | Объект приложения |
---|