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:----ZP/5zIXwyTEXc7o1qGa4JqYj6cPK7pcN1y1bPZQYY5pyP7tOSQiZXf5TQK2NTnXDUv5zzxWIBTA2YvZbii86GqElRycr8ZaH0AM1MydN6QtIIPiFqdlkUL1Szx/yH02QZy/gTaajsOJP7CwOptWP4E7PCICi2DGEUbVL+9ywOqLWXwRIPLTArT0XUBKd8qr8pIjgQ6Whoi4Rd7+M4jGGC79rDiuwbgRXmTvCqtNR/HALpPDGSAkyeWtjB6+iQaQycC5xDyAmnvR6A44kQmaHanAVBTEcTuwdVBTFSFYcMi2B5pLlWZGPnLGBWwTlN0Pf8ut8zesFOhzfAoAB0Z70jZe/G8v0MzXqvHPkKlnXUZU+6i4+BmO/cmN8PkEE66l1vbLeFrYaq5GxIsjjvaqM9qdOvG5biEAacG2Sh1TiGulzpqD7AqUxFr/GrshU/kHOplNlZM3ZeKwUwsXK/0uQ/wecW+0lAjyb8Af4Ivdmve4IIu3fU1JJbZ9XJqa7LbcFKj5ujliUNEf11FrvlY1MTzqjl4T9Dpg9nCM4epw92FmlhGuzfXwCOOqk6vd1Aw9iIziVa+p4Qx0SAIaUJzP5vWhHPL1NvrR0l8UdPi90c2OjLmlV9YKJLoUSyysGsKpT2pzuRabYgyA0F57rt06wixGQmmsElUSBVN0feUTcETM=----ATTACHMENT:----ODY0MDIxOTExNzc0MjUxMyA4ODg2NDYzMzM5Mzc5MDAyIDEwMzkwOTg5NTE0NTUyMzE=