/** * Renders the PHP code for this Proxy Method * * @return string PHP code */ public function render() { $methodDocumentation = $this->buildMethodDocumentation($this->fullOriginalClassName, $this->methodName); $methodParametersCode = $this->methodParametersCode !== '' ? $this->methodParametersCode : $this->buildMethodParametersCode($this->fullOriginalClassName, $this->methodName); $callParentMethodCode = $this->buildCallParentMethodCode($this->fullOriginalClassName, $this->methodName); $staticKeyword = $this->reflectionService->isMethodStatic($this->fullOriginalClassName, $this->methodName) ? 'static ' : ''; $visibility = $this->visibility === null ? $this->getMethodVisibilityString() : $this->visibility; $returnType = $this->reflectionService->getMethodDeclaredReturnType($this->fullOriginalClassName, $this->methodName); $returnTypeDeclaration = $returnType !== null ? ' : ' . $returnType : ''; $code = ''; if ($this->addedPreParentCallCode !== '' || $this->addedPostParentCallCode !== '' || $this->methodBody !== '') { $code = "\n" . $methodDocumentation . ' ' . $staticKeyword . $visibility . ' function ' . $this->methodName . '(' . $methodParametersCode . "){$returnTypeDeclaration}\n {\n"; if ($this->methodBody !== '') { $code .= "\n" . $this->methodBody . "\n"; } else { $code .= $this->addedPreParentCallCode; if ($this->addedPostParentCallCode !== '') { $code .= ' $result = ' . ($callParentMethodCode === '' ? "NULL;\n" : $callParentMethodCode); $code .= $this->addedPostParentCallCode; $code .= " return \$result;\n"; } else { $code .= $callParentMethodCode === '' ? '' : ' return ' . $callParentMethodCode . ";\n"; } } $code .= " }\n"; } return $code; }