Skip to content

Commit 3b9fe6d

Browse files
committed
Address deprecation of ReflectionType::getClass().
1 parent 7970152 commit 3b9fe6d

File tree

1 file changed

+17
-1
lines changed

1 file changed

+17
-1
lines changed

OptionsResolver.php

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ public function setDefault($option, $value)
146146
$reflClosure = new \ReflectionFunction($value);
147147
$params = $reflClosure->getParameters();
148148

149-
if (isset($params[0]) && null !== ($class = $params[0]->getClass()) && Options::class === $class->name) {
149+
if (isset($params[0]) && Options::class === $this->getParameterClassName($params[0])) {
150150
// Initialize the option if no previous value exists
151151
if (!isset($this->defaults[$option])) {
152152
$this->defaults[$option] = null;
@@ -1066,4 +1066,20 @@ private static function isValueValidType($type, $value)
10661066
{
10671067
return (\function_exists($isFunction = 'is_'.$type) && $isFunction($value)) || $value instanceof $type;
10681068
}
1069+
1070+
/**
1071+
* @return string|null
1072+
*/
1073+
private function getParameterClassName(\ReflectionParameter $parameter)
1074+
{
1075+
if (!method_exists($parameter, 'getType')) {
1076+
return ($class = $parameter->getClass()) ? $class->name : null;
1077+
}
1078+
1079+
if (!($type = $parameter->getType()) || $type->isBuiltin()) {
1080+
return null;
1081+
}
1082+
1083+
return method_exists($type, 'getName') ? $type->getName() : (string) $type;
1084+
}
10691085
}

0 commit comments

Comments
 (0)