Phpdocumentor使用心得

如果你是一名码农,除了敲代码之外还要做一些琐事例如:写文档。那么你就应该学会使用工具自动生成,这样会大大提高工作效率。下面介绍一下笔者自行研究的phpdocumentor,欢迎讨论。

首先说明一下笔者环境:

            window系统  xampp集成环境   

              php安装目录 :     G:xampp/php 

先附一张简单的phpdocumentor生成图:


Phpdocumentor使用心得

一、非集成环境

1、依赖pear安装:

a)安装pear:下载pearhttp://pear.php.net/go-pear.phar;

将go-pear.phar放到PHP目录下

执行安装命令:

php go-pear.phar

下面会执行输入system

然后一路回车安装完毕

2、手动安装:(此安装方式可能会涉及samter模板路径问题)

a)下载最新版的phpdocumentor解压即可

官网地址http://phpdoc.org;

二、集成环境

1、依赖pear安装:

①:查看是否已经安装pear

方式:打开dos窗口进入php安装目录下输入:pear

如果没有安装则安装,方式如上。

②:查看pear目录中是否存在phpdocumentor本地包:pear list


③:执行安装就OK(没有的话他首先会自动下载,下载之后需要解压到php/pear下)

进入dos的php目录,输入pear install -a PhpDocumentor。

如果想使用web接口,则必须首先改变一个配置,在下载的phpdocumentor里面找到phpdoc.bat进行如果下编辑 让phpCLi=php.exe这个路径


④:可以在dos窗口phpdocumentor目录下收入命令生成自己需要的文档了。

2、手动安装:

b)下载最新版的phpdocumentor解压即可

官网地址http://phpdoc.org;

三、生成文档相关问题

1.怎样使用PhpDocumentor生成文档

a.命令行方式

在phpDocumentor所在目录下,输入Php -h

会得到一个详细的参数表,其中几个重要的参数如下:

-f要进行分析的文件名,多个文件用逗号隔开

-d要分析的目录,多个目录用逗号分割

-t生成的文档的存放路径

-o输出的文档格式,结构为输出格式:转换器名:模板目录。

例如:phpdoc -o HTML:frames:earthli -f test.php -t docs

b. Web界面生成

在新的phpdoc中,除了在命令行下生成文档外,还可以在客户端浏览器上操作生成文档,具体方法是先把PhpDocumentor的内容放在apache目录下使得通过浏览器可以访问到,访问后显示如下的界面:

点击files按钮,选择要处理的php文件或文件夹,还可以通过该指定该界面下的Files to ignore来忽略对某些文件的处理。

然后点击output按钮来选择生成文档的存放路径和格式.

最后点击create,phpdocumentor就会自动开始生成文档了,最下方会显示生成的进度及状态,如果成功,会显示

Total Documentation Time: 1 seconds

done

Operation Completed!!

然后,我们就可以通过查看生成的文档了,如果是pdf格式的,名字默认为documentation.pdf。

2、中文乱码解决方法

如果注释是中文的,需把PhpDocumentor/phpDocumentor/Converters/*中相应模板的语言标签执行iso-8859-1到utf-8的替换,否则生成出来是乱码

3.给php代码添加规范的注释

PHPDocument是从你的源代码的注释中生成文档,因此在给你的程序做注释的过程,也就是你编制文档的过程。从这一点上讲,PHPdoc促使你要养成良好的编程习惯,尽量使用规范,清晰文字为你的程序做注释,同时多多少少也避免了事后编制文档和文档的更新不同步的一些问题。在phpdocumentor中,注释分为文档性注释和非文档性注释。所谓文档性注释,是那些放在特定关键字前面的多行注释,特定关键字是指能够被phpdoc分析的关键字,例如class,var等,具体的可参加附录一。那些没有在关键字前面或者不规范的注释就称作非文档性注释,这些注释将不会被phpdoc所分析,也不会出现在你产生的api文当中。

如何书写文档性注释:

所有的文档性注释都是由/**开始的一个多行注释,在phpDocumentor里称为DocBlock,DocBlock是指软件开发人员编写的关于某个关键字的帮助信息,使得其他人能够通过它知道这个关键字的具体用途,如何使用。PhpDocumentor规定一个DocBlock包含如下信息:

1.功能简述区

2.详细说明区

3.标记tag

文档性注释的第一行是功能描述区,正文一般是简明扼要地说明这个类,方法或者函数的功能,功能简述的正文在生成的文档中将显示在索引区。功能描述区的内容可以通过一个空行或者". "来结束。在功能描述区后是一个空行,接着是详细说明区,这部分主要是详细说明你的API的功能、用途、如果可能也可以有用法举例等等。在这部分,你应该着重阐明你的API函数或者方法的通常的用途、用法,并且指明是否是跨平台的(如果涉及到),对于和平台相关的信息,你要和那些通用的信息区别对待。通常的做法是另起一行,然后写出在某个特定平台上的注意事项或者是特别的信息,这些信息应该足够,以便你的读者能够编写相应的测试信息,比如边界条件,参数范围,断点等等。之后同样是一个空白行,然后是文档的标记tag,指明一些技术上的信息,主要是调用参数类型、返回值极其类型、继承关系、相关方法/函数等等。

关于文档标记,详细的请参考--文档标记。文档注释中还可以使用例如 这样的标签,详细介绍请参考附录二。

下面是一个文档注释的例子

/**

*函数add,实现两个数的加法

*

*一个简单的加法计算,函数接受两个数a、b,返回他们的和c

*

* @param int加数

* @param int被加数

* @return integer

*/

function Add($a, $b)

{

return $a+$b;

}

生成文档如下:

Add

integer Add( int $a, int $b)

[line 45]

函数add,实现两个数的加法

Constants一个简单的加法计算,函数接受两个数a、b,返回他们的和c

Parameters

? int $a -加数

? int $b -被加数

5.文档标记:

文档标记的使用范围是指该标记可以用来修饰的关键字,或其他文档标记。所有的文档标记都是在每一行的*后面以@开头。如果在一段话的中间出来@的标记,这个标记将会被当做普通内容而被忽略掉。

@access

使用范围:class,function,var,define,module

该标记用于指明关键字的存取权限:private、public或proteced

@author

使用范围:class,function,var,define,module,use

指明作者

@copyright

使用范围:class,function,var,define,module,use

指明版权信息

@deprecated

使用范围:class,function,var,define,module,constent,global,include

指明不用或者废弃的关键字

@example

该标记用于解析一段文件内容,并将他们高亮显示。PHPDOC会试图从该标记给的文件路径 中读取文件内容

@const

使用范围:define

用来指明php中define的常量

@final

使用范围:class,function,var

指明关键字是一个最终的类、方法、属性,禁止派生、修改。

@filesource

和example类似,只不过该标记将直接读取当前解析的php文件的内容并显示。

@global

指明在此函数中引用的全局变量

@ingore

用于在文档中忽略指定的关键字

@license

相当于html标签中的,首先是URL,接着是要显示的内容

例如百度

可以写作@license http://www.baidu.com百度

@link

类似于license

但还可以通过link指到文档中的任何一个关键字

@name

为关键字指定一个别名。

@package

使用范围:页面级别的define,function,include

类级别的class,var,methods

用于逻辑上将一个或几个关键字分到一组。

@abstrcut

说明当前类是一个抽象类

@param

指明一个函数的参数

@return

指明一个方法或函数的返回指

@static

指明关建字是静态的。

@var

指明变量类型

@version

指明版本信息

@todo

指明应该改进或没有实现的地方

@throws

指明此函数可能抛出的错误异常,极其发生的情况

上面提到过,普通的文档标记标记必须在每行的开头以@标记,除此之外,还有一种标记叫做inline tag,用{@}表示,具体包括以下几种:

{@link}

用法同@link

{@source}

显示一段函数或方法的内容

6.一些注释规范

a.注释必须是

/**

* XXXXXXX

*/

的形式

b.对于引用了全局变量的函数,必须使用glboal标记。

c.对于变量,必须用var标记其类型(int,string,bool...)

d.函数必须通过param和return标记指明其参数和返回值

e.对于出现两次或两次以上的关键字,要通过ingore忽略掉多余的,只保留一个即可

f.调用了其他函数或类的地方,要使用link或其他标记链接到相应的部分,便于文档的阅读。

g.必要的地方使用非文档性注释,提高代码易读性。

h.描述性内容尽量简明扼要,尽可能使用短语而非句子。

i.全局变量,静态变量和常量必须用相应标记说明

7.总结

编写文档是一项乏味却不得不做的工作,而编写API级的文档更是意味着大量的重复劳动和难以保持的一致性。这里我们要推荐给大家的,是支持php5语法分析的文档工具--phpDocumentor。phpDocumentor是一个非常强大的文档自动生成工具,利用它可以帮助我们编写规范的注释,生成易于理解,结构清晰的文档,对我们的代码升级、维护、移交等都有非常大的帮助。使用phpDocumentor不仅可以自动从代码中提取出函数和方法定义,还可以自动处理各个class之间的关系,并据此生成class tree。你还可以选择将文档生成html、chm或者pdf。有了phpDocumentor,文档工作变得轻松了很多。关于phpDocumentor更为详细的说明,可以到它的官方网站:http://manual.phpdoc.org/查阅。

#�g�

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,311评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,339评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,671评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,252评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,253评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,031评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,340评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,973评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,466评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,937评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,039评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,701评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,254评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,259评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,485评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,497评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,786评论 2 345

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,599评论 18 139
  • php.ini设置,上传大文件: post_max_size = 128Mupload_max_filesize ...
    bycall阅读 6,736评论 3 64
  • PHP(一)基础语法 本来就是学习笔记,就不说废话了 参考 PHP 手册陈惠贞 , 陈俊荣.PHP 7&MySQL...
    cndaqiang阅读 1,085评论 1 1
  • 1.PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用...
    黄花菜已凉阅读 3,531评论 1 6
  • 篮球架的高度要合适,目标要让员工能够够得到,目标过于遥不可及久失去的激励的意义
    淄川DDM赵鑫阅读 294评论 0 0