Skip to content

Commit 34db069

Browse files
committed
Address deprecation of ReflectionType::getClass().
1 parent e7b59be commit 34db069

File tree

1 file changed

+19
-1
lines changed

1 file changed

+19
-1
lines changed

Controller/ControllerResolver.php

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ protected function doGetArguments(Request $request, $controller, array $paramete
136136
} else {
137137
$arguments[] = $attributes[$param->name];
138138
}
139-
} elseif ($param->getClass() && $param->getClass()->isInstance($request)) {
139+
} elseif ($this->typeMatchesRequestClass($param, $request)) {
140140
$arguments[] = $request;
141141
} elseif ($param->isDefaultValueAvailable()) {
142142
$arguments[] = $param->getDefaultValue();
@@ -260,4 +260,22 @@ private function getControllerError($callable)
260260

261261
return $message;
262262
}
263+
264+
/**
265+
* @return bool
266+
*/
267+
private function typeMatchesRequestClass(\ReflectionParameter $param, Request $request)
268+
{
269+
if (!method_exists($param, 'getType')) {
270+
return $param->getClass() && $param->getClass()->isInstance($request);
271+
}
272+
273+
if (!($type = $param->getType()) || $type->isBuiltin()) {
274+
return false;
275+
}
276+
277+
$class = new \ReflectionClass(method_exists($type, 'getName') ? $type->getName() : (string) $type);
278+
279+
return $class && $class->isInstance($request);
280+
}
263281
}

0 commit comments

Comments
 (0)