| @@ 9-47 (lines=39) @@ | ||
| 6 | use N1215\Jugoya\Wrapper\CallableMiddleware; |
|
| 7 | use Psr\Container\ContainerInterface; |
|
| 8 | ||
| 9 | final class MiddlewareResolver implements MiddlewareResolverInterface |
|
| 10 | { |
|
| 11 | use ResolverTrait; |
|
| 12 | ||
| 13 | /** |
|
| 14 | * @var ContainerInterface |
|
| 15 | */ |
|
| 16 | protected $container; |
|
| 17 | ||
| 18 | /** |
|
| 19 | * @param ContainerInterface $container |
|
| 20 | */ |
|
| 21 | public function __construct(ContainerInterface $container) |
|
| 22 | { |
|
| 23 | $this->container = $container; |
|
| 24 | } |
|
| 25 | ||
| 26 | /** |
|
| 27 | * @param string|callable|MiddlewareInterface $ref |
|
| 28 | * @return MiddlewareInterface |
|
| 29 | * @throws UnresolvedException |
|
| 30 | */ |
|
| 31 | public function resolve($ref): MiddlewareInterface |
|
| 32 | { |
|
| 33 | if ($ref instanceof MiddlewareInterface) { |
|
| 34 | return $ref; |
|
| 35 | } |
|
| 36 | ||
| 37 | if (is_callable($ref)) { |
|
| 38 | return new CallableMiddleware($ref); |
|
| 39 | } |
|
| 40 | ||
| 41 | if (!is_string($ref)) { |
|
| 42 | throw new \InvalidArgumentException('Argument 1 $ref must be one of an instance of MiddlewareInterface, a callable or string.'); |
|
| 43 | } |
|
| 44 | ||
| 45 | return $this->resolveByContainer($ref, $this->container, MiddlewareInterface::class); |
|
| 46 | } |
|
| 47 | } |
|
| 48 | ||
| @@ 9-47 (lines=39) @@ | ||
| 6 | use N1215\Jugoya\Wrapper\CallableHandler; |
|
| 7 | use Psr\Container\ContainerInterface; |
|
| 8 | ||
| 9 | final class RequestHandlerResolver implements RequestHandlerResolverInterface |
|
| 10 | { |
|
| 11 | use ResolverTrait; |
|
| 12 | ||
| 13 | /** |
|
| 14 | * @var ContainerInterface |
|
| 15 | */ |
|
| 16 | protected $container; |
|
| 17 | ||
| 18 | /** |
|
| 19 | * @param ContainerInterface $container |
|
| 20 | */ |
|
| 21 | public function __construct(ContainerInterface $container) |
|
| 22 | { |
|
| 23 | $this->container = $container; |
|
| 24 | } |
|
| 25 | ||
| 26 | /** |
|
| 27 | * @param string|callable|RequestHandlerInterface $ref |
|
| 28 | * @return RequestHandlerInterface |
|
| 29 | * @throws UnresolvedException |
|
| 30 | */ |
|
| 31 | public function resolve($ref): RequestHandlerInterface |
|
| 32 | { |
|
| 33 | if ($ref instanceof RequestHandlerInterface) { |
|
| 34 | return $ref; |
|
| 35 | } |
|
| 36 | ||
| 37 | if (is_callable($ref)) { |
|
| 38 | return new CallableHandler($ref); |
|
| 39 | } |
|
| 40 | ||
| 41 | if (!is_string($ref)) { |
|
| 42 | throw new \InvalidArgumentException('Argument 1 $ref must be one of an instance of HandlerInterface, a callable or string.'); |
|
| 43 | } |
|
| 44 | ||
| 45 | return $this->resolveByContainer($ref, $this->container, RequestHandlerInterface::class); |
|
| 46 | } |
|
| 47 | } |
|
| 48 | ||