|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
你已经阅读过关于:面向对象编程可以帮助你治理你的大型web项目,并且你已经开始使用PHP来进行面向对象编程了吗?假如你已经编写了几个类应用在网站上并且你是一个有条理的人的话,那么你应该已经编写了关于它们的一些文档。但是假如你是一个象我相同的不拘小节的人,你只是会在类的源代码中加一些注释而没有别的文档。没有文档就很难记住方式的名字和它们的使用方式(参数和含义)。解决这种情况最典型的办法就是打开源代码文件,从成百上千的语句中查找。 类似Javadoc的文档 我的意见是维护一个作为源代码内的引用文档要比维护一个独立的文档要轻易和更实用,因为这个方式更轻易保持更新。否则就异常轻易变得懒惰从而将对文档的更新推后到无限期(假如一定要给它加个期限,我想是一万年)。相反使用象这样的一个工具,只有一点工作量就是在你正在修改的源代码四周更新一个标记,接着运行工具再一次生成更新过的HTML页面。 一些php文档工具的预览 phpSearchdoc是enzyme项目的一部分。因为enzyme 是一个巨大的项目,所以需要将其文档化。那里的开发人员已经编写了他们自已的文档系统并且他们异常慷慨地将其作为一个独立的包进行发布。得到的文档首先被写入数据库,然后可以被一些PHP脚本查看,象一个动态的web站点。 从现存的信息中将用于分析的逻辑分离出来的想法相称好,然而phpSearchdoc(版本 1.01)不具有一个真正的分析器,而是从源文件,甚至包括注释中搜索要害字。事实上,对我来说碰巧发生过在我的注释中存在'function'单词,结果分析器愚蠢地认为在这个单词后面的词就是函数的名字。更不幸的是,我不巧在同一行放了一个单引号('),接着我试图将数据写到数据库中,mysql作出了抱怨(出错了,因为单引号在 mysql中被用于分割字符串)。 而且它的安装及运行相称困难,因为它还是一个alpha测试版。究竟比起文档系统来说它更象是一个交叉引用生成器,正如我知道的,你不能在函数和方式中加入自已的注释。 phpxref,就象名字所指的比起一个真正 的文档系统来好像更象是面向交叉引用的生成处理。更进一步说它更适合于正常的过程化编程而不是面向对象编程。 phpautodoc的目标是实现象Javadoc 应用于Java那样用于PHP。它看上去是满意我的文档需求的完美解决。为了试验它我不得不编译了PHP的CGI版本(我通常使用模块版本),因为生成器是用PHP编的。我可能轻易地在一个Linux系统下编译和安装静态的执行程序,可以使用这些命令: rm config.chche 我决定对它自已的PHP源码进行测试,并且我发现它只有部分可以工作:它只能够生成类的文档(生成整洁的格式),但是不能生成小结。我不知道是否这个只是碰巧发生在我的机器上,但是在试图生成小结时却因为core dump(内核崩溃)而停止(PHP 4.0 pl2,RedHat 6.2环境)。如果在你的机器/usr/local/bin下安装了PHP执行版本,调用它的语法是(为了得到结果我不得不给出php文件和输出目录的全路径) ./phpautodoc -o phpdoc是一个用来维护在Web站点上的php 文件,并且它异常适合分布式开发方法。文档是从数据库中生成;在安装之后,你可以使用web界面来增加你的类将其文档化。这个的确有意思,但是它是一种低级的从源代码中分离文档的维护方式,这一点就我来说不是异常方便。 通用工具 是的,你看的没错,HeaderDoc只支持C和C++。没有其它的语言,但是它不象JavaDoc,它大部分依靠写在注释中的标记,所以只要做些小改动(我会在后面解释)就可以很好的用在PHP上。这些标记同JavaDoc很象,HeaderDoc标记的一些例子是@class,@function和@var。 文档化一个类 -------------------------------------------------------------------------------- 文档化一个类。可以在左边的帧选择类的方式。 第一件需要注重的事情是用在打开注释上的风格不完全象JavaDoc注释/**(一个斜线和两个星号),而是换成/*!(一个斜线,一个星号和一个感叹号) 。标记使用也不相同,但是它们以相似的方法工作。例如,第一个标记是@class标记,它用于文档化一个类,这个标记跟着类的名字。下一个标记是@abstract 标记,它 文档化函数或方式 -------------------------------------------------------------------------------- 文档化一个方式。 @function标记声明了一个函数并且后面跟着函数或成员函数名。然后你可以象前面相同使用 @abstract和@discussion标记。然而还有两个额外的标记。@param标记用于描述函数的参数;第一个词假设为变量的名字,其它的则为任意的文本描述。我建议要声明想要的变量类型,尽管PHP不是一个强类型语言。 @result标记被用于描述返回值。 文档化变量 -------------------------------------------------------------------------------- 如何修改脚本用于PHP -------------------------------------------------------------------------------- headerdoc2html -o docs classes/*.php 不幸的是假如存在多个PHP文件,这个脚本有一个坏习惯就是将那些文件分割到不同的目录中去,使得在类的文档中浏览变得很困难。而且因为初始的脚本是为C/C++头文件所写的(头文件中只有类和函数的声明而没有他们的定义),脚本会将函数名下的所有代码输出,直到遇到";",所以典型的就是代码的第一行。 但是在你好不轻易读到现在却感到绝望之前,放松,因为我写了一段简朴的脚本来解决这两个问题。 -------------------------------------------------------------------------------- 祝你的文档化工作好运!
返回类别: 教程 上一教程: 用 PHP 使 Web 数据分析进入更高境界 下一教程: Php5.0说明 ------为面向对象而生的php5 您可以阅读与"如何文档化你的PHP类"相关的教程: · 如何文档化你的PHP类 · 如何文档化你的PHP类(二) · 如何文档化你的PHP类(一) · PEAR:使用PHPDoc轻松建立你的PEAR文档 · 如何加速你的PHP程序 |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |