/** * @param string $comment * @param string $current_tag * @param \ReflectionMethod|\ReflectionClass $reflection * @return array */ private function extractTagsFromComment($comment, $current_tag = 'description', $reflection) { $ns = $reflection instanceof \ReflectionClass ? $reflection->getNamespaceName() : $reflection->getDeclaringClass()->getNamespaceName(); $tags = array($current_tag => ''); foreach (explode(PHP_EOL, $comment) as $line) { if ($current_tag != 'example') { $line = trim($line); } $words = explode(' ', trim($line)); if (strpos($words[0], '@') === false) { // Append to tag $joinWith = $current_tag == 'example' ? PHP_EOL : ' '; $tags[$current_tag] .= $joinWith . $line; } elseif ($words[0] == '@param') { // Get parameter declaration if ($paramData = $this->figureOutParamDeclaration($words, $ns)) { list($name, $data) = $paramData; $tags['params'][$name] = $data; } } else { // Start new tag $current_tag = substr($words[0], 1); array_splice($words, 0, 1); if (empty($tags[$current_tag])) { $tags[$current_tag] = ''; } $tags[$current_tag] .= trim(join(' ', $words)); } } foreach ($tags as $name => $val) { if (is_array($val)) { foreach ($val as $subName => $subVal) { if (is_string($subVal)) { $tags[$name][$subName] = trim($subVal); } } } else { $tags[$name] = trim($val); } } return $tags; }
$staticX++; $x = $staticX; return $x; } class Test { public function test() { } } $rf = new \ReflectionFunction('\\foo\\bar\\f'); print "--- getShortName(\"\\foo\\bar\\f\") ---\n"; var_dump($rf->getShortName()); print "\n"; print "--- getNamespaceName(\"\\foo\\bar\\f\") ---\n"; var_dump($rf->getNamespaceName()); print "\n"; $rf = new \ReflectionMethod('\\foo\\bar\\Test', 'test'); print "--- getShortName(\"\\foo\\bar\\Test::test\") ---\n"; var_dump($rf->getShortName()); print "\n"; print "--- getNamespaceName(\"\\foo\\bar\\Test::test\") ---\n"; var_dump($rf->getNamespaceName()); print "\n"; $rf = new \ReflectionFunction('\\strlen'); print "--- getShortName(\"strlen\") ---\n"; var_dump($rf->getShortName()); print "\n"; print "--- getNamespaceName(\"strlen\") ---\n"; var_dump($rf->getNamespaceName()); print "\n";
/** * @param \ReflectionClass|\ReflectionMethod $reflection * @return string */ private function getNameSpace($reflection) { if ($reflection instanceof \ReflectionClass) { return $reflection->getNamespaceName(); } else { return $reflection->getDeclaringClass()->getNamespaceName(); } }