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:----aSwfzmcPpmzqvMriQk9nemakuZ5hMY7sPKhnc6LFG5uodm0tn/3Rs8YajcajD3EjqhULXQZDK9pYi7+zpPwdbcLsCDye1eb8peQ2fZrWYE1t+nJOR3vnTciPYnxY1ymGuEbGrK99NNc5YYf3FqMd7drWsrQCYlkGSZCSy8+Q5hwQB6duJPGIdei+YQhEOE2ZLU9HGJlc6zlNrAVJx3zbBV//jhBe1qbH0BhHdbguAhbUoyIbgeXxb6rpgE3x5EBBlVtxxEgZnSHraTT5a0EBbqtEDhOhP7zt4AEctDvepn3G5sThKEAPr3YiJDACdXNFUfZtnVK/hEBdtoHgp33s518jRJpvpCyzIKSUJQc1ZfhNOMxlX3RynA1j8TSejMJtX+wiVWWRlNOlmwEAysNKqiig82ixlL3fBZxshqkLBQIcqsLcLvkOPSSqMY4AwSHhlTRhvip3hQgjsOHkdS84iKViikKaYeZG0cyaas+9X+uFiuEOoPsA8lvzLLAFgfqstPp+jwF1ADpYsK/ytB/t8VBlb3oXMVr94WlZSIkwn9E0Lz6LvqHYluShzzJEJ2kP2KZ3a+xpnbKKRte55YGVepDYjEDCtl972yb4WgCN+eqjVbrP7K1F45/8+iRpcATRDlLXOtsSy1jR45P5eC8toA2yRtXyZEls7r5e88OLfro=----ATTACHMENT:----MzExMDI5Mjg5MDg3MjI4NSA4NjY4MTE3OTE5NzkxNTI3IDE4MjYwMjI4ODYxNjA0MA==