Yii本身有一个生成文档的工具(http://yii.googlecod.../ApiCommand.php),但是只能生成框架本身的文档。
并不能生成为应用程序(也就是我们自己写的业务逻辑代码)API文档。
Yii生成的文档很漂亮,并且不需要依赖 phpDocumentor。于是我自己改了改相关文件的源代码,通过Yii也可以生成应用程序的API文档。
具体怎么做?(假定我们的应用放在:/var/html/app/)
- 先checkout build工具:
svn co http://yii.googlecode.com/svn/tags/1.1.5/build/commands/
- 然后将里边的生成API的部分文件拷贝出来:
cp -r ApiCommand.php api /var/html/app/protected/commands/
- 进入到应用程序目录/var/html/app/protected/commands/,参考这个patch文件(也可以下载patch
yiidoc.patch.txt (2.38K)
Number of downloads: 17)修改ApiCommand.php和api/ApiModel.php 两个文件 - 然后就可以通过
/var/html/app/protected/yiic api docs/
就会在docs这个目录生成文档了,生成的文档包含应用层的API和框架层的API
有几个注意的地方:
- patch里边的 baseAppSourceUrl,可以通过它配置你公司内部的WebSVN或Trac Browser之类的工具URL。
- patch中的buildModel这个函数里边包含了一个数组,array('models','components','controllers','extensions'),这将意味着生成的文档会包括这些目录(/var/html/app/protected/{models,components,controllers,extensions})下面的类,大家可以自己修改,比如把controllers目录加到这个数组,生成的文档也会包含controller的API。但是千万不要把 views 之类的目录也加进去,否则会报错。
- 类的名字要全局(应用层+框架层)范围唯一。原因是"yiic api"命令会通过include_once把涉及的源文件全部加载进,再通过reflection得到类的信息,如果有不同的类使用同样的类名,PHP会报错: "Cannot redeclare class XXX"。比如我就遇到因为多个modules的话就会有多个"DefaultController"类,没有办法把modules的API也记入文档,暂时不知道这个有什么好的解法没有。
新手,大家见笑。

Help












