解析基于反射的文栏数据.docx

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
解析基于反射的文栏数据

解析基于反射的文栏数据在前一章中,我介绍了文档注释是如何与程序一起存储的,并以将会介绍如何使用反射技术访问这些数据。访问文档注释数据比较容易.稍后会加以介绍,但是一旦获得了注释数据.就需要将它解析为一种可用的格式。所以,首先看一下如何解析注释。}安装文档块分词器 使用文档块分词器可以解析文档块注释信息。然而,安装分词器需要一些技巧。 在以下的说明中,假设有一个可用的pecl命令。并且使用的是UNIX. Linux或者Mac OSX操作系统,然而,在Windows系统中,安装过程是很相似的。 首先,布要安装文档块pecl扩展。使用管理员账户执行以下的命令即可。 Pecl install docblock文档块包应该有一个稳定的包了,不过.如果还没有的话.就会看到如下的警告信息。Failed to download pecl/docblock within preferred state *stable*,latest release is version 0.2.0,stability “alpha”,use “channel://pecl.php.net/docblock-0.2.0” to install在这种情况下,使用命令返网的完整URL,并且以以下形式重新运行install命令。Pecl install channel://pecl.php.net/docblock-0.2.0如果一切正常,就应该已经安装好文档块分词器了,使用以下命令可以确认它是否能够正确运行Php –I |grep DocBlock然后,会看到以下结果〔如果能够正常运行的话〕.DocBlock Tokenizer support=enabled 如果没有看到这样的输出结果.可能需要在php.ini文件中激活扩展。执行以下命令找到Php.ini文件Php –I |grep php.ini应该得到与以下类似的结果。Configuration File (php.ini) Path=/etc/php5.1/cli/php.ini然后,需要向php.ini文件添加以一下文本以激活文档块扩展。Extension=docblock.so最后,重新执行命令以检查文档块是否已经安装成功。 只要文档块扩展开始运行,就可以使用分词器风格的解析器去解析文档块注释。然而,首先需要从反射API那里实际地获得文档注释数据,以便加以处理。代码演示了如何使用反射技术访问文档注释数据。/*这趋一个文档注释*这个文档注释用夹说明demo类*/Class demo(){ $reflectionClass new ReflectionClass(“demo”); $docComment = $reflectionClass-getDocComment();Print($docComent);}执行代码.会生成以下输山结果. /*这是个文档注释 *这个文档注释用来说明demo类 */ 下一步,对这个数据做粉刺处理给文档注释数据做分词处理文档块分词器pecl扩展的主要方法是mixed docblock_tokenize($comment,$terseMode=false)简洁模式参数控制了是否在解析结果中包含非语义标识符,如commentstart标识符。这个函数会返回一个标识符数组以及与之相关联的数据r 需要的第二个函数是docblock_token_name($token)函数。这个函数接收一个标识符ID,这个ID是从分词过程返回的数组项的第一个索引。函数会将数字标识符ID转换为可读的字符串。 ?php /* *这是一个文档注释 *这个文档注释用来说明demo类*/Class demo{}$reflectionClass = new ReflectionClass(‘demo’);$docComment = $reflectionClass-getDocComment();$tokens = docblock_tokenize($docComment,true);Foreach($tokens as $token){ Echo $token[0] .’=’; Echo docblock_token_name($token[1]).’=’; Print_r($token[1]); Echo “\n”;}这段代码的输出结果如下1=DOCBLOCK_NEWLINE=2=DOCBLOCK_WHITESPACE=36=DOCBLOCK_TEXT=This is a doccomment1=DOCBLOCK_NEWLINE=1=DOCBLOCK_NEWLINE=2=DOCBLOCK_WHITESPACE=36=DOCBLOCK_TEXT=This doccomment documents the

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档