1 | <?php |
||
55 | class AuraRouterAdapter implements RouterContainerInterface |
||
56 | { |
||
57 | /** |
||
58 | * Aura.Router container |
||
59 | * |
||
60 | * @var RouterContainer |
||
61 | */ |
||
62 | protected $routerContainer; |
||
63 | |||
64 | /** |
||
65 | * Constructor |
||
66 | * |
||
67 | * @param RouterContainer $routerContainer Router container |
||
68 | */ |
||
69 | 1 | public function __construct(RouterContainer $routerContainer) |
|
73 | |||
74 | /** |
||
75 | * Register a route |
||
76 | * |
||
77 | * @param RouteInterface $route Route |
||
78 | * @return RouterContainerInterface Self reference |
||
79 | */ |
||
80 | 2 | public function registerRoute(RouteInterface $route) |
|
97 | |||
98 | /** |
||
99 | * Create a default route |
||
100 | * |
||
101 | * @param RouteInterface $route Route |
||
102 | * @return AuraDefaultRoute Default route |
||
103 | */ |
||
104 | 1 | protected function createDefaultRoute(RouteInterface $route) |
|
112 | |||
113 | /** |
||
114 | * Dispatch a request |
||
115 | * |
||
116 | * @param ServerRequestInterface $request |
||
117 | * @return ResponseInterface $response |
||
118 | */ |
||
119 | 2 | public function dispatchRequest(ServerRequestInterface $request) |
|
132 | |||
133 | /** |
||
134 | * Handle a matched route request |
||
135 | * |
||
136 | * @param ServerRequestInterface $request Server request |
||
137 | * @param Route $route Matched route |
||
138 | * @return ResponseInterface $response |
||
139 | */ |
||
140 | 2 | protected function handleRequestRoute(ServerRequestInterface $request, Route $route) |
|
141 | { |
||
142 | // If this is a default route: Preprocess the matched attributes |
||
143 | 2 | if ($route instanceof AuraDefaultRoute) { |
|
144 | 1 | $route->preprocessAttributes(); |
|
145 | } |
||
146 | |||
147 | // Copy all route attributes to the server request |
||
148 | 2 | foreach ($route->attributes as $key => $val) { |
|
149 | 2 | $request = $request->withAttribute($key, $val); |
|
150 | } |
||
151 | |||
152 | 2 | $handler = $route->handler; |
|
153 | |||
154 | // If the handler is a callable |
||
155 | 2 | if (is_callable($handler)) { |
|
156 | return $handler($request); |
||
157 | } |
||
158 | |||
159 | /** @var ActionInterface $handler */ |
||
160 | 2 | $handler = Kernel::create($handler, [$request]); |
|
|
|||
161 | 2 | return $handler(); |
|
162 | } |
||
163 | |||
164 | /** |
||
165 | * Handle a mismatched request |
||
166 | * |
||
167 | * @param ServerRequestInterface $request Server request |
||
168 | * @param Matcher $matcher Matcher |
||
169 | * @return ResponseInterface Response |
||
170 | */ |
||
171 | protected function handleRequestMismatch(ServerRequestInterface $request, Matcher $matcher) |
||
196 | } |
||
197 |
It seems like the type of the argument is not accepted by the function/method which you are calling.
In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.
We suggest to add an explicit type cast like in the following example: