getNumberOfParameters(); $params = $reflection->getParameters(); // Prepare parameter info $paramInfos = []; foreach ($params as $param) { $paramDetails = [ 'name' => $param->getName(), 'type' => $param->hasType() ? (string)$param->getType() : null, 'is_optional' => $param->isOptional(), 'default_value' => null, ]; // Suppress deprecation warnings when getting default value if ($param->isDefaultValueAvailable()) { $originalErrorReporting = error_reporting(); error_reporting($originalErrorReporting & ~E_DEPRECATED); $defaultValue = $param->getDefaultValue(); error_reporting($originalErrorReporting); // Convert default value to a JSON-serializable format if (is_scalar($defaultValue) || is_null($defaultValue)) { $paramDetails['default_value'] = $defaultValue; } else { // Convert non-scalar values to their string representation $paramDetails['default_value'] = var_export($defaultValue, true); } } $paramInfos[] = $paramDetails; } // Collect function info $functionInfo = [ 'name' => $functionName, 'num_params' => $numParams, 'params' => $paramInfos, ]; $functionInfoList[] = $functionInfo; } catch (\Throwable $e) { // Handle any exceptions or errors // You can log the error if needed } } // Write the function info list to JSON file $json = json_encode($functionInfoList, JSON_PRETTY_PRINT); // Check if json_encode failed if ($json === false) { echo "json_encode error: " . json_last_error_msg() . "\n"; // Optionally, you can handle the error further here } else { file_put_contents('./apis.json', $json); } } // Call the function collect_functions([]);