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