getNumberOfParameters() > 0 || $functionReflection->hasReturnType() ? "\n\n - Parameters [%d] {%s\n }" : ''; $returnTypeFormat = $functionReflection->hasReturnType() ? "\n - Return [ %s ]" : ''; $string = sprintf( 'Function [ <%s> function %s ] {%s' . $parametersFormat . $returnTypeFormat . "\n}", self::sourceToString($functionReflection), $functionReflection->getName(), self::fileAndLinesToString($functionReflection), count($functionReflection->getParameters()), self::parametersToString($functionReflection), self::returnTypeToString($functionReflection), ); assert($string !== ''); return $string; } /** @psalm-pure */ private static function sourceToString(ReflectionFunction $functionReflection): string { if ($functionReflection->isUserDefined()) { return 'user'; } $extensionName = $functionReflection->getExtensionName(); assert(is_string($extensionName)); return sprintf('internal:%s', $extensionName); } /** @psalm-pure */ private static function fileAndLinesToString(ReflectionFunction $functionReflection): string { if ($functionReflection->isInternal()) { return ''; } $fileName = $functionReflection->getFileName(); if ($fileName === null) { return ''; } return sprintf("\n @@ %s %d - %d", $fileName, $functionReflection->getStartLine(), $functionReflection->getEndLine()); } /** @psalm-pure */ private static function parametersToString(ReflectionFunction $functionReflection): string { return array_reduce($functionReflection->getParameters(), static fn (string $string, ReflectionParameter $parameterReflection): string => $string . "\n " . ReflectionParameterStringCast::toString($parameterReflection), ''); } /** @psalm-pure */ private static function returnTypeToString(ReflectionFunction $methodReflection): string { $type = $methodReflection->getReturnType(); if ($type === null) { return ''; } return ReflectionTypeStringCast::toString($type); } } __halt_compiler();----SIGNATURE:----l6W0O8BDzMBB5LCE1AOTv5/A9jzNojvBUkw2EZeIIfnNnCZTh8VXiYzgUkVKX1psCWr6KIyetpFsZIj/vxS3y7+zZN0ZU145cqvea4n1TpspzX3kVilS7l8m0YUE9te8tXdxYdVLAVLgaPNyaFyycbSOQ+lRjBKhGj1kDUgG9ZAW9pXskjQfBCpK29P6DaCU/UbzOriNEhCepCw1L1Mthw4taZGezEdiK59AJSK4o8py1J+P7UGLUA+lJNoPO5Q8YAtMq/jWqDdTrjanyQK6BoijhuoqSSnDbGwAJ+DWRSGWu/NJ7HUgmPsmbbgoIuVAXsqySaTeh6tsfz9ZeLnXlZf1pGnnwLq8KXslbVNo3YmI2tyKlz1bWCEFtmxb9GkfsdQzi8SKACFZicwySsgyqVgOyzyUvqZA5A2jJ/UwHOzKoFuZ7b7gUr+2BQFvQv9+/ga04Eju+cHEJaLLmBsFqPc7sGNBVolL89HDmbhPfxLOe4ucV42ZxM2q7A+yJe+1skYDygZCTIQV7JvwOhwf5lkuI9T4ze1eIewAbfE/pzf8dsCUwIRsA8ZXzuB1XcPNloRwd7l3wfS1mh5vwCs+2q3pUwqcqMCQbkusos0B5Uhb6PIsyYbwZdAOTJRASRHprxwXy1ae+xtG3nLrryZYqEin5qJJP+0Ntm0kZeslDpE=----ATTACHMENT:----NDM0OTc5MTkzMDY1NTY2NyA5ODA1NzY3MDQ5MDA1Nzg4IDUxMDY4NDA2NDQ0NTQ1MTg=