public function buildMethodParametersCode($fullClassName, $methodName, $addTypeAndDefaultValue = true)
    {
        $methodParametersCode = '';
        $methodParameterTypeName = '';
        $nullableSign = '';
        $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'];
                    } elseif ($methodParameterInfo['class'] !== null) {
                        $methodParameterTypeName = '\\' . $methodParameterInfo['class'];
                    } else {
                        $methodParameterTypeName = '';
                    }
                    if (\PHP_MAJOR_VERSION >= 7 && \PHP_MINOR_VERSION >= 1) {
                        $nullableSign = $methodParameterInfo['allowsNull'] ? '?' : '';
                    }
                    if ($methodParameterInfo['optional'] === true) {
                        $rawDefaultValue = $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 ? $nullableSign . $methodParameterTypeName . ' ' : '')
                    . $byReferenceSign
                    . '$'
                    . $methodParameterName
                    . $defaultValue
                ;
                $methodParametersCount++;
            }
        }

        return $methodParametersCode;
    }
public function buildMethodParametersCode($fullClassName, $methodName, $addTypeAndDefaultValue = true)
    {
        $methodParametersCode = '';
        $methodParameterTypeName = '';
        $nullableSign = '';
        $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'];
                    } elseif ($methodParameterInfo['class'] !== null) {
                        $methodParameterTypeName = '\\' . $methodParameterInfo['class'];
                    } else {
                        $methodParameterTypeName = '';
                    }
                    if (\PHP_MAJOR_VERSION >= 7 && \PHP_MINOR_VERSION >= 1) {
                        $nullableSign = $methodParameterInfo['allowsNull'] ? '?' : '';
                    }
                    if ($methodParameterInfo['optional'] === true) {
                        $rawDefaultValue = $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 ? $nullableSign . $methodParameterTypeName . ' ' : '')
                    . $byReferenceSign
                    . '$'
                    . $methodParameterName
                    . $defaultValue
                ;
                $methodParametersCount++;
            }
        }

        return $methodParametersCode;
    }
public function buildMethodParametersCode ( $ fullClassName , $ methodName , $ addTypeAndDefaultValue = true ) { $ methodParametersCode = '' ; $ methodParameterTypeName = '' ; $ nullableSign = '' ; $ 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' ] ; } elseif ( $ methodParameterInfo [ 'class' ] !== null ) { $ methodParameterTypeName = '\\' . $ methodParameterInfo [ 'class' ] ; } else { $ methodParameterTypeName = '' ; } if ( \ PHP_MAJOR_VERSION >= 7 && \ PHP_MINOR_VERSION >= 1 ) { $ nullableSign = $ methodParameterInfo [ 'allowsNull' ] ? '?' : '' ; } if ( $ methodParameterInfo [ 'optional' ] === true ) { $ rawDefaultValue = $ 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 ? $ nullableSign . $ methodParameterTypeName . ' ' : '' ) . $ byReferenceSign . '$' . $ methodParameterName . $ defaultValue ; $ methodParametersCount ++ ; } } return $ methodParametersCode ; }
Builds the PHP code for the parameters of the specified method to be
used in a method interceptor in the proxy class

@param string $fullClassName Name of the class the method is declared in
@param string $methodName Name of the method to create the parameters code for
@param boolean $addTypeAndDefaultValue If the type and default value for each parameters should be rendered
@return string A comma speparated list of parameters
Builds the PHP code for the parameters of the specified method to be used in a method interceptor in the proxy class