解析器与反射API的集成

解析器与反射API的集成

ID:38804399

大小:20.62 KB

页数:8页

时间:2019-06-19

解析器与反射API的集成_第1页
解析器与反射API的集成_第2页
解析器与反射API的集成_第3页
解析器与反射API的集成_第4页
解析器与反射API的集成_第5页
资源描述:

《解析器与反射API的集成》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、解析器与反射API的集成首先,将之前清单中的文档块解析器与反射API集成在一起。通过扩展核心的Reflecticn类并且将解析器作为静态方法添加进去,就可以做到这一点。代码显示了这一扩展。将这段代码和所有随后的反射类都放到一个名为DocumentingReflection.php的公共的包含文件中。集成文档注释解析器(DocumentingReflection.php)ClassDocumentingReflectionextendsReflection{PublicstaticfunctionParseDocCo

2、mment($docComment){$returnData=$comments=$tags=$array();$tagNames=$tagData=array();$tokens=docblock_tokenize($docComment,true);Foreach($tokensas$token){Switch($token[0]){CaseDOCBLOCK_TEXT:If(!isset($tagId)){$comments[]=$token[1];}else{If(array_key_exists($tagI

3、d,$tagData)){$tagData[$tagId].=’’.trim($token[1]);}else{$tagData[$tagId]=trim($token[1]);}}Break;CaseDOCBLOCK_TAG:$tagId=uniquid();$tagNames[$tagId]=trim($token[1],’@’);Break;}}Foreach($tagDataas$tagId=>$data){$tagName=$tagNames[$tagId];If(array_key_exists($ta

4、gName,$tags)){If(!is_array($tags[$tagName])){$backupData=$tags[$tagName];$tags[$tagName]=array();$tags[$tagName]=$backupData;}$tag[$tagName]=$data;}else{$tags[$tagName]=$data;}}$returnData[‘comments’]=$comments;$returnData[‘tags’]=$tags;$returnData[‘tokens’]=$

5、tokens;Return$returnData;}}现在已经定义了静态函数ParseDocComment.这正是添加附加的处理逻辑功能的地方,例如处理行内标签的功能。但是在实现这些功能之前,需要扩展另外一些反射类。扩展反射类下一个要扩展的类是ReflectionMethod类。这是因为它是最全面的反射实现类,它仍然包含了getDocComment()方法。还需要扩展ReflectionParameter类,但是需要从相关联的方法中获取数据,然后这个方法类的扩展才能实现。下面代码,创建了DocumentingRef

6、lectionMethod类,将reflectionMethod类与ParseDocComment类集成。创建DocumentingReflectionMethod类(DocumentingReflection.php)ClassDocmentingReflectionMethodextendsReflectionMethod{Protected$_comments,$_tags,$_tokens,$_declaringClass;Publicfunction__construct($object,$method)

7、{Parent::__construct($object,$method);$docComment=$this->getDocComment();$this->_declaringClass=$object;$parsedComment=DocumentingReflection::ParseDocComment($docComment);$this->_comments=$parsedComment[‘comments’];$this->_tags=$parsedComment[‘tags’];$this->_t

8、okens=$parsedComment[‘tokens’];}PublicfunctionprintDocTokens(){Foreach($this->_tokensas$token){Echo$token[0].”=”;Echodocblock_token_name($token[1]).’=’;Print_r($token[1]);Echo“”;

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。