public function buildMethodParametersCode($fullClassName, $methodName, $addTypeAndDefaultValue = true)
{
$methodParametersCode = '';
$methodParameterTypeName = '';
$defaultValue = '';
$byReferenceSign = '';
if ($fullClassName === null || $methodName === null) {
return '';
}
$methodParameters = $this->reflectionService->getMethodParameters($fullClassName, $methodName);
if (count($methodParameters) > 0) {
$methodParametersCount = 0;
foreach ($methodParameters as $methodParameterName => $methodParameterInfo) {
if ($addTypeAndDefaultValue) {
if ($methodParameterInfo['array'] === true) {
$methodParameterTypeName = 'array';
} elseif ($methodParameterInfo['scalarDeclaration']) {
$methodParameterTypeName = $methodParameterInfo['type'];
} else {
$methodParameterTypeName = $methodParameterInfo['class'] === null ? '' : '\\' . $methodParameterInfo['class'];
}
if ($methodParameterInfo['optional'] === true) {
$rawDefaultValue = isset($methodParameterInfo['defaultValue']) ? $methodParameterInfo['defaultValue'] : null;
if ($rawDefaultValue === null) {
$defaultValue = ' = NULL';
} elseif (is_bool($rawDefaultValue)) {
$defaultValue = $rawDefaultValue ? ' = TRUE' : ' = FALSE';
} elseif (is_numeric($rawDefaultValue)) {
$defaultValue = ' = ' . $rawDefaultValue;
} elseif (is_string($rawDefaultValue)) {
$defaultValue = " = '" . $rawDefaultValue . "'";
} elseif (is_array($rawDefaultValue)) {
$defaultValue = ' = ' . $this->buildArraySetupCode($rawDefaultValue);
}
}
$byReferenceSign = $methodParameterInfo['byReference'] ? '&' : '';
}
$methodParametersCode .= ($methodParametersCount > 0 ? ', ' : '') . ($methodParameterTypeName ? $methodParameterTypeName . ' ' : '') . $byReferenceSign . '$' . $methodParameterName . $defaultValue;
$methodParametersCount++;
}
}
return $methodParametersCode;
}