/** * @param \EBT\ExtensionBuilder\Domain\Model\ClassObject\Method $methodObject * @return \PhpParser\Node\Stmt\ClassMethod */ public function buildMethodNode(\EBT\ExtensionBuilder\Domain\Model\ClassObject\Method $methodObject) { $factory = new \PhpParser\BuilderFactory(); $methodNodeBuilder = $factory->method($methodObject->getName()); $parameters = $methodObject->getParameters(); if (count($parameters) > 0) { foreach ($parameters as $parameter) { $parameterNode = $this->buildParameterNode($parameter); $methodNodeBuilder->addParam($parameterNode); } } $methodNodeBuilder->addStmts($methodObject->getBodyStmts()); $methodNode = $methodNodeBuilder->getNode(); $methodNode->type = $methodObject->getModifiers(); $methodNode->setAttribute('startLine', $methodObject->getStartLine()); $methodNode->setAttribute('endLine', $methodObject->getEndLine()); $methodObject->updateParamTags(); $this->addCommentAttributes($methodObject, $methodNode); return $methodNode; }
/** * @param \EBT\ExtensionBuilder\Domain\Model\ClassObject\Method $method * @param array $replacements * @return void */ protected function updateMethodBody($method, $replacements) { $stmts = $method->getBodyStmts(); $stmts = current($this->parserService->replaceNodeProperty(array($stmts), $replacements, null, 'name')); $stmts = current($this->parserService->replaceNodeProperty(array($stmts), $replacements, null, 'value')); $method->setBodyStmts($stmts); }