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:----V3PSzEs/dn4vdGFcq1X6mkKIIhUaGt738szYlI41jOtcj4a4OxOQWF6y+zmt4Ux1JpceeovQPo6ybdR8K/3wckQJDNM9bJ+e/qTXR/1jqrqOCa9a6GhTybR2Vw+nkaFx5Lb8/LTa6SWWy8PfbovFJmWjqKeqEuiQs8ocY883C3+cgK3YkRogqXC/pM4zsz0Laj7t2XXI1CLpuGr2eGeg996KyrRYRSqExgSAC+Rn/13g4wY/WgHHAO6ZJ89Bc5tvSd2DXuheA5C1IMF1gy8/v8We3dcQ9+GokSvozosPIlImh5Vvc99UbDm2EJATb8ukUFVAjCiJfHTtEUozR1Z0VKasE7MQcWps2L8yUAY9SdKsvDsR/Y8iGLnJgL0IeKEa7XU76X7VpVGzXY/1Qxi2aVvE4XvWLy9Gha4bciczJ5y8c9RS7xWdKeW9t3bibAyTBwKVgI0rY2iUX2wSH+ACY1oqNXbwZPYzLFc/r8y3CBSZK1WckmONHXlAUj4gBCPVt87HtpLlMuGjmmX7GoDvOU7omwiYrJRc7PcZY4bANJHtGGA0oKYsb3hfMbCNpjE7pHBnGQxpMBn47Tl6PnGYpU6l13He6bW9ysh4qyWNV1fvAS4bvDsWtS2AMsjsXTtyFf3aSTjgK5ECpRxgwjbcQ6sMQV+DnVCvdSZg8hSV2Qc=----ATTACHMENT:----Mjk1MTM5MTc1NDQ3MjY4MyA3MDMxMzEyNTg3MDg3ODMxIDQ0MTMzNjc0MjMyMTE0OTY=