Skip to content

Commit 81511ba

Browse files
[3.4] Fix support for PHP8 union types
1 parent cd61db3 commit 81511ba

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

Resource/ReflectionClassResource.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,7 @@ private function generateSignature(\ReflectionClass $class)
177177
if (!$parametersWithUndefinedConstants) {
178178
yield preg_replace('/^ @@.*/m', '', $m);
179179
} else {
180+
$t = \PHP_VERSION_ID >= 70000 ? $m->getReturnType() : '';
180181
$stack = [
181182
$m->getDocComment(),
182183
$m->getName(),
@@ -187,15 +188,16 @@ private function generateSignature(\ReflectionClass $class)
187188
$m->isPrivate(),
188189
$m->isProtected(),
189190
$m->returnsReference(),
190-
\PHP_VERSION_ID >= 70000 && $m->hasReturnType() ? (\PHP_VERSION_ID >= 70100 ? $m->getReturnType()->getName() : (string) $m->getReturnType()) : '',
191+
$t instanceof \ReflectionNamedType ? ((string) $t->allowsNull()).$t->getName() : (string) $t,
191192
];
192193

193194
foreach ($m->getParameters() as $p) {
194195
if (!isset($parametersWithUndefinedConstants[$p->name])) {
195196
$stack[] = (string) $p;
196197
} else {
198+
$t = \PHP_VERSION_ID >= 70000 ? $p->getType() : '';
197199
$stack[] = $p->isOptional();
198-
$stack[] = \PHP_VERSION_ID >= 70000 && $p->hasType() ? (\PHP_VERSION_ID >= 70100 ? $p->getType()->getName() : (string) $p->getType()) : '';
200+
$stack[] = $t instanceof \ReflectionNamedType ? $t->getName() : (string) $t;
199201
$stack[] = $p->isPassedByReference();
200202
$stack[] = \PHP_VERSION_ID >= 50600 ? $p->isVariadic() : '';
201203
$stack[] = $p->getName();

0 commit comments

Comments
 (0)