$signature =
($function->
isPublic() ? 'public ' :
($function->
isProtected() ? 'protected ' : 'private '
)) .
($function->
isStatic() ? 'static ' : ''
).
$signature;
} if ($function->
hasReturnType()) { $signature .= ': '.self::
exportType($function);
} static $getPrototype;
$getPrototype ??= (new \
ReflectionMethod(\ReflectionMethod::
class, 'getPrototype'
))->
invoke(...
);
while ($function) { if ($function->
hasTentativeReturnType()) { return '#[\ReturnTypeWillChange] '.
$signature;
} try { $function =
$function instanceof \ReflectionMethod &&
$function->
isAbstract() ? false :
$getPrototype($function);
} catch (\ReflectionException
) { break;
} } return $signature;
}