Skip to content

Commit e125306

Browse files
bug #36891 Address deprecation of ReflectionType::getClass() (derrabus)
This PR was merged into the 3.4 branch. Discussion ---------- Address deprecation of ReflectionType::getClass() | Q | A | ------------- | --- | Branch? | 3.4 | Bug fix? | yes | New feature? | no | Deprecations? | no | Tickets | #36872 | License | MIT | Doc PR | N/A Calling `ReflectionType::getClass()` will trigger a deprecation warning on php 8. This PR switches to `getType()` if available. Commits ------- 53b1677a4e Address deprecation of ReflectionType::getClass().
2 parents 5b389af + 34db069 commit e125306

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)