getParameters() as $param) { $value = null; if (!$param->isOptional() && isset($args[$param->getPosition()])) { $value = $args[$param->getPosition()]; } elseif ($param->isOptional() && isset($args[$param->getPosition()])) { $value = $args[$param->getPosition()]; } elseif ($param->isOptional() && $param->isDefaultValueAvailable()) { $value = $param->getDefaultValue(); } $args_str .= sprintf("\$%s = %s, ", $param->getName(), debug_stringify($value)); } $args_str = rtrim($args_str, ", "); return debug("{$name}( {$args_str} );"); } /** * Stringify variables for use in the debug log. This is used more as fallback to json_encode() failing to maintain quick * readability of the logs. * * @param mixed $value Any value that needs stringified * * @return string */ function debug_stringify($value) { if (is_bool($value)) { return $value ? 'true' : 'false'; } return trim(preg_replace('/\s+/m', ' ', print_r($value, true))); }