
1
2
3
4
$pipe = ABC::newService(ABC::PIPE);
| 1 | setHttp() | Устанавливает начальные значения Request и Response |
| 2 | add() | Добавляет мидлвар в очередь |
| 3 | isEmpty() | Проверяет очередь на пустоту |
| 4 | run() | Запускает очередь |
Устанавливает первоначальные значения Request и Response.
Метод задаст первоначальные значения, если в этом есть необходимость. Если метод не вызвать, будут инициализированы и использованы пустые объекты Request и Response.
| public Pipe::setHttp ( $request, $response ) | ||
| $request | object | Первоначальное значение Request. |
| $response | object | Первоначальное значение Response. |
| return | void | |
|---|---|---|
Добавляет мидлвар в очередь.
Метод добавит мидлвар в очередь по принципу стека. Первым будет вызван последний добавленый.
| public Pipe::add ( $middleware ) | ||
| $middleware | mix | Метод принимает параметром:
1. Валидный collback (замыкание или название функции) 2. Invokable class (объект или название класса, содержащего метод __invoke()) 3. Объект или название класса, отвечающего интерфейсу PSR-15 4. Массив, элементами которого являются вышеперечисленные аргументы в любых вариантах. |
| return | object | Объект сервиса |
|---|---|---|
Проверяет очередь на пустоту.
Метод проверяет наличие мидлваров в очереди. Осуществляется проверка всей очереди, а не с текущего места.
| public Pipe::isEmpty ( ) | ||
| return | boolean | true, если очередь пуста, либо false, если нет. |
|---|---|---|
Запускает очередь.
Метод запускает очередь зарегистрированных мидлваров по принципу стека (первым запускается последний). Возвращает прошедший всю цепочку мидлваров Response
| public Pipe::run ( ) | ||
| return | object | Объект Response |
|---|---|---|
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
31
32
33
34
// Запускаем сервис
$pipe = ABC::newService(ABC::PIPE);
// Следующее не обязательно, если не устанавливать начальных
// Request и Response, то автоматически будут установлены пустые.
$http = ABC::newService(ABC::HTTP);
$request = $http->newRequest();
$response = $http->newResponse();
// Этот метод удобен тогда, когда уже есть подготовленные Request и Response
$pipe->setHttp($request, $response);
// Сначала устанавливаем конечный обработчик, будет запущен последним
$pipe->add(function ($request, $response, $next) {
$response->getBody()->write('CONTENT');
return $response;
});
// Этот мидлвар запускается первым. Он добавляет в Response BEFORE,
// потом результат вышестоящего обработчика (CONTENT) , потом добавляет AFTER
$pipe->add(function ($request, $response, $handler) {
$response->getBody()->write('BEFORE ');
$response = $handler($request);
$response->getBody()->write(' AFTER');
return $response;
});
// Получаем Response, прошедший по всей трубе
$response = $pipe->run();
// Результат:
echo $response->getBody(); // BEFORE CONTENT AFTER