/** * class_statement_3 * method_modifiers function is_reference T_STRING '(' parameter_list ')' method_body */ protected function class_statement_3($params) { if (is_array($params[0])) { $methodModifiers = $params[0]; } else { $methodModifiers = array($params[0]); } $isReference = $params[2] ? true : false; $methodName = $params[3]->getValue(); $parameterList = $params[5]; $methodBody = $params[7] ? $params[7] : null; $method = new Stagehand_PHP_Class_Method($methodName); $method->setCode($methodBody); $lex = $this->getParser()->lex; $docComment = $lex->getLatestDocComment(); if ($docComment) { $method->setDocComment($docComment, true); } if ($isReference) { $method->setReference(); } if ($parameterList) { foreach ($parameterList as $argument) { $method->addArgument($argument); } } $this->_setModifiers($method, $methodModifiers); $this->addCurrentMethod($method); return parent::execute(__FUNCTION__, $params); }
/** * @test */ public function useDocComment() { $name = 'getFoo'; $docComment = "A tests for DocComment.\n\n@return boolean"; $formatedDocComment = "/**\n * A tests for DocComment.\n *\n * @return boolean\n */"; $result = <<<EOF /** * A tests for DocComment. * * @return boolean */ public function getFoo() { return true; } EOF; $method = new Stagehand_PHP_Class_Method($name); $method->setCode('return true;'); $method->setDocComment($docComment); $this->assertEquals($method->getDocComment(), $formatedDocComment); $this->assertEquals($method->render(), $result); $docComment = "/**\n * A tests for DocComment.\n *\n * @return boolean\n */"; $method->setDocComment($docComment, true); $this->assertEquals($method->getDocComment(), $formatedDocComment); $this->assertEquals($method->render(), $result); }