Neos\Flow\ObjectManagement\Proxy\ProxyMethod::buildMethodParametersCode PHP Метод

buildMethodParametersCode() публичный Метод

Builds the PHP code for the parameters of the specified method to be used in a method interceptor in the proxy class
public buildMethodParametersCode ( string $fullClassName, string $methodName, boolean $addTypeAndDefaultValue = true ) : string
$fullClassName string Name of the class the method is declared in
$methodName string Name of the method to create the parameters code for
$addTypeAndDefaultValue boolean If the type and default value for each parameters should be rendered
Результат string A comma speparated list of parameters
    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;
    }