Failed Conditions
Branch refactor/kernels (cc9370)
by Atanas
02:23
created

ExecutesMiddlewareTrait   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 21
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
eloc 7
dl 0
loc 21
ccs 7
cts 7
cp 1
c 0
b 0
f 0
rs 10
wmc 2

1 Method

Rating   Name   Duplication   Size   Complexity  
A executeMiddleware() 0 12 2
1
<?php
2
/**
3
 * @package   WPEmerge
4
 * @author    Atanas Angelov <[email protected]>
5
 * @copyright 2018 Atanas Angelov
6
 * @license   https://www.gnu.org/licenses/gpl-2.0.html GPL-2.0
7
 * @link      https://wpemerge.com/
8
 */
9
10
namespace WPEmerge\Middleware;
11
12
use Closure;
13
use WPEmerge\Facades\Application;
14
use WPEmerge\Helpers\MixedType;
15
use WPEmerge\Requests\RequestInterface;
16
17
/**
18
 * Allow objects to execute middleware.
19
 */
20
trait ExecutesMiddlewareTrait {
21
	/**
22
	 * Execute an array of middleware recursively (last in, first out).
23
	 *
24
	 * @param  array                               $middleware
25
	 * @param  RequestInterface                    $request
26
	 * @param  Closure                             $next
27
	 * @return \Psr\Http\Message\ResponseInterface
28
	 */
29 5
	public function executeMiddleware( $middleware, RequestInterface $request, Closure $next ) {
30 5
		$top_middleware = array_shift( $middleware );
31
32 5
		if ( $top_middleware === null ) {
33 5
			return $next( $request );
34
		}
35
36 4
		$top_middleware_next = function ( $request ) use ( $middleware, $next ) {
37 4
			return $this->executeMiddleware( $middleware, $request, $next );
38 4
		};
39
40
		return MixedType::value( $top_middleware, [$request, $top_middleware_next], 'handle', [Application::class, 'instantiate'] );
41
	}
42
}
43