diff --git a/src/lib/ParseComment.php b/src/lib/ParseComment.php new file mode 100644 index 0000000..92e44c7 --- /dev/null +++ b/src/lib/ParseComment.php @@ -0,0 +1,87 @@ + $v) { + $comments[$k] = $v = trim($v); + if (strpos($v, '@') !== 0) { + continue; + } + $_parse = $this->_parseCommentLine($v); + if (!$_parse) { + continue; + } + $_type = $_parse['type']; + $_content = isset($_parse['content']) ? $_parse['content'] : ''; + if ($_type === 'param') { + if (!isset($this->commentParams[$_type])) { + $this->commentParams[$_type] = []; + } + unset($_parse['type']); + $this->commentParams[$_type][] = $_parse; + } else { + $this->commentParams[$_type] = $_content; + } + } + return $this->commentParams; + } + + /** + * 解析注释中的参数 + * @param $line - 注释行 + * @return bool|array - 解析后的数组(解析失败返回false) + */ + private function _parseCommentLine($line) { + $line = explode(' ', $line); + $line[0] = substr($line[0], 1); + $class = new ParseLine(); + $action = 'parseLine' . $class->underlineToHump($line[0]); + if (!method_exists($class, $action)) { + $action = 'parseLineTitle'; + } + return $class->$action($line); + } +} \ No newline at end of file