diff --git a/src/ApiDoc.php b/src/ApiDoc.php new file mode 100644 index 0000000..e6b7c0b --- /dev/null +++ b/src/ApiDoc.php @@ -0,0 +1,71 @@ +getDocComment(); + } catch (\Exception $exception) { + return []; + } + $parse = new ParseComment(); + return $parse->parseCommentToArray($classDocComment); + } + + /** + * 获取指定类下方法的注释 + * @param $class - 类名称(存在命名空间时要完整写入) eg: $class = 'itxq\\apidoc\\ApiDoc'; + * @param $type - 方法过滤,默认只获取 public类型 方法 + * ReflectionMethod::IS_STATIC + * ReflectionMethod::IS_PUBLIC + * ReflectionMethod::IS_PROTECTED + * ReflectionMethod::IS_PRIVATE + * ReflectionMethod::IS_ABSTRACT + * ReflectionMethod::IS_FINAL + * @return array - 返回格式为数组(未获取到注释时返回空数组) + */ + public function getActionComment($class, $type = \ReflectionMethod::IS_PUBLIC) { + try { + $reflection = new \ReflectionClass($class); + //只允许生成public方法 + $method = $reflection->getMethods($type); + } catch (\Exception $exception) { + return []; + } + $comments = []; + $parse = new ParseComment(); + foreach ($method as $action) { + try { + $comments[] = $parse->parseCommentToArray($action->getDocComment()); + } catch (\Exception $exception) { + continue; + } + } + return $comments; + } +} \ No newline at end of file