-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathInvoker.php
49 lines (38 loc) · 1.34 KB
/
Invoker.php
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?php
/**
* Qubus\Routing
*
* @link https://github.com/QubusPHP/router
* @copyright 2020
* @author Joshua Parker <joshua@joshuaparker.dev>
* @license https://opensource.org/licenses/mit-license.php MIT License
*/
declare(strict_types=1);
namespace Qubus\Routing;
use Invoker\Invoker as DIInvoker;
use Invoker\ParameterResolver\Container\TypeHintContainerResolver;
use Psr\Container\ContainerInterface;
use Psr\Http\Message\ServerRequestInterface;
final class Invoker extends DIInvoker
{
protected TypeHintRequestResolver $requestResolver;
public function __construct(ContainerInterface $container)
{
parent::__construct(parameterResolver: null, container: $container);
$resolver = $this->getParameterResolver();
/**
* Allow the invoker to resolve dependencies via Type Hinting.
*
* @var ContainerInterface $container
*/
$containerResolver = new TypeHintContainerResolver($container);
$resolver->prependResolver(resolver: $containerResolver);
$this->requestResolver = new TypeHintRequestResolver();
$resolver->prependResolver(resolver: $this->requestResolver);
}
public function setRequest(ServerRequestInterface $request): self
{
$this->requestResolver->setRequest(request: $request);
return $this;
}
}