php 注释规范


Posted in PHP onMarch 29, 2012

用过IDE或看过其他源码的小伙伴们应该都见过类似下面这样的注释

/**
 * 递归获取所有游戏分类
 * @param int $id
 * @return array
 */

看得多了就大概知道了一些规律。为了使自己的代码更加规zhuang范bi,也开始有样学样地写着这些注释

其实这种注释格式是有自己的名字的,它就叫——

PHPDOC

PHPDoc 是一个 PHP 版的 Javadoc。它是一种注释 PHP 代码的正式标准。它支持通过类似 phpDocumentor 这样的外部文档生成器生成 API 文档,也可以帮助一些例如 Zend Studio, NetBeans, ActiveState Komodo Edit and IDE 和 Aptana Studio 之类的 集成开发环境 理解变量类型和弱类型语言中的其他歧义并提供改进的代码完成,类型提示和除错功能。
PHPDoc 可同时支持 面向对象 的和 面向过程的 代码。

以上摘自维基百科
简单来说PHPDOC可以用来自动生成API文档。主流的IDE都会识别它,并在你coding中给予你相应的智能提示。使用PHPDOC有以下好处

  • 让你的代码更加规zhuang范bi,更易于理解

  • 让你的IDE更懂你的代码,更加智能的提示和自动完成

  • 如需API手册,可使用phpDocumentor来自动生成

还等什么?快跟我一起来学习又好用又有逼格的phpDoc吧!

有关phpDoc的完整文档位于phpDocumentor官网。以下内容由我个人理解、提炼而来,而且我也还在学习中,如有失误还请各位多多指教

@api

表示这是一个提供给第三方使用的API接口

@author

作者
格式@author [名称] [<邮箱>]
例如@author mokeyjay <i@mokeyjay.com>

@copyright

版权声明。例如很多网站底部都有
格式@copyright [描述]
例如@copyright 1949-2016 China

@deprecated

不建议使用的、已过期的、将被删除的
格式@deprecated [<版本号>] [<描述>]
例如@deprecated 1.0.0 新版本将不再包含此函数
如果它是被其他方法所取代了,建议添加@see标记

@example

例子、示例、用例。也可表示方法返回值的例子
格式@example [位置] [<起始行号> [<行数>] ] [<描述>]
例如@example demo.php 10 3 使用示例

@filesource

没看懂,如果你们看懂了请告诉我。传送门

@global

全局变量
格式@global [类型][名称] @global [类型][描述]
我怀疑这里是源文档打错了,大概应该是
格式@global [类型][名称][描述]
类型@global string name 用户名

@ignore

忽略
格式@ignore [<描述>]
例如你在if和else的语句块中定义分别同一个变量但值不同时,可以通过此标记让phpDocumentor忽略其中一个,以免生成重复的文档。例如

if ($ostest) {
   /**
   * This define will either be 'Unix' or 'Windows'
   */
   define("OS","Unix");
 } else {
   /**
   * @ignore
   */
   define("OS","Windows");
 }

@internal

仅限内部使用的
格式@internal [描述]
例如@internal 仅限内部测试使用

@license

协议,很常见的啦
格式@license [<url>] [名称]
例如@license GPL

@link

链接,可用于辅助说明、引用文档等
格式@link [url] [<描述>]
例如@link http://g.cn 不懂滚去问谷歌,别来烦我

@method

方法。这是用在类注释里的标记。特别适合一些动态加载的类,IDE无法自动提示出来,这时就可以通过写@method标记来告诉IDE我这类里有哪些方法
格式@method [返回值类型] [名称]([[类型] [参数]<, ...>]) [<描述>]
例如@method string google(string $question) 向谷歌提问,返回答案内容

@package

包。但php没有包,所以就用来表示命名空间
例如@package yii\base\db

@param

参数,用于函数和方法注释里的标记
格式@param [Type] [name] [<description>]
例如@param string title 文章标题

@property

类属性,与@method类似,可以告诉IDE我这类里有哪些属性
格式@property [Type] [name] [<description>]
例如@property int id 用户id

@property-read

只读的属性。例如__get魔术方法能够取到的属性
格式@property-read [Type] [name] [<description>]
例如@property-read int id 用户id

@property-write

只可写的属性。例如__set魔术方法能够设置的属性
格式@property-write [Type] [name] [<description>]
例如@property-write string name 用户名

@return

返回值
格式@return [类型] [<描述>]]
例如@return array 结果数组

@see

参考,类似@link,可与@deprecated联动
格式@see [url或完整方法名] [<描述>]
例如@see \yii\base\db::tableName() 旧方法table_name已弃用,请使用此方法替代

@since

从xx版本开始。例如从1.0之后添加了xx功能、删除了xx参数等
格式@since [1.0.0] [<描述>]
例如@since 1.0.2 添加了$b参数

@source

没看懂,如果你们看懂了请告诉我。传送门

@throws

可能会抛出的错误类型
格式@throws [类型] [<描述>]
例如@throws LifeException 没钱了,好想死啊

@todo

待办。提示自己或他人还需要做些什么
格式@todo [描述]
例如@todo 这个类还没做异常处理

@uses

使用
格式@uses [完整方法名] [<描述>]
例如@uses \yii\base\db::$count 使用此属性计数

@var

变量
格式@var [类型] [变量名] [<描述>]
例如@var int id 用户id

@version

版本号
格式@version [<载体>] [<描述>]
例如@version 1.0.1 2016-07-03更新
或者@version GIT:1f3197d01 来自GIT分支1f3197d01

PHP 相关文章推荐
php session应用实例 登录验证
Mar 16 PHP
php邮件发送,php发送邮件的类
Mar 24 PHP
PHP FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)
Jul 23 PHP
浅析php面向对象public private protected 访问修饰符
Jun 30 PHP
PHP 输出URL的快捷方式示例代码
Sep 22 PHP
php实现图形显示Ip地址的代码及注释
Jan 20 PHP
php rsa加密解密使用详解
Jan 14 PHP
Yii2创建表单(ActiveForm)方法详解
Jul 23 PHP
PHP实现二维数组按某列进行排序的方法
Nov 18 PHP
php+resumablejs实现的分块上传 断点续传功能示例
Apr 18 PHP
在云虚拟主机部署thinkphp5项目的步骤详解
Dec 21 PHP
Django中通过定时任务触发页面静态化的处理方式
Aug 29 PHP
php 计划任务 检测用户连接状态
Mar 29 #PHP
MySQL的FIND_IN_SET函数使用方法分享
Mar 27 #PHP
php提示无法加载或mcrypt没有找到 PHP 扩展 mbstring解决办法
Mar 27 #PHP
phpMyAdmin 链接表的附加功能尚未激活问题的解决方法(已测)
Mar 27 #PHP
phpMyAdmin出现无法载入 mcrypt 扩展,请检查PHP配置的解决方法
Mar 26 #PHP
simplehtmldom Doc api帮助文档
Mar 26 #PHP
php中一个有意思的日期逻辑处理
Mar 25 #PHP
You might like
PHP实现字符串翻转功能的方法【递归与循环算法】
2017/11/03 PHP
PHP5.5新特性之yield理解与用法实例分析
2019/01/11 PHP
Javascript实现返回上一页面并刷新的小例子
2013/12/11 Javascript
详解JavaScript语法对{}处理的坑爹之处
2014/06/05 Javascript
z-blog SyntaxHighlighter 长代码无法换行解决办法(jquery)
2014/11/16 Javascript
javascript限制用户只能输汉字中文的方法
2014/11/20 Javascript
Underscore.js常用方法总结
2015/02/28 Javascript
AngularJS基础 ng-class-odd 指令示例
2016/08/01 Javascript
JS日期对象简单操作(获取当前年份、星期、时间)
2016/10/26 Javascript
jQuery Ajax请求后台数据并在前台接收
2016/12/10 Javascript
微信小程序 出现错误:{&quot;baseresponse&quot;:{&quot;errcode&quot;:-80002,&quot;errmsg&quot;:&quot;&quot;}}解决办法
2017/02/23 Javascript
获取当前按钮或者html的ID名称实例(推荐)
2017/06/23 Javascript
SpringMVC简单整合Angular2的示例
2017/07/31 Javascript
vue中子组件的methods中获取到props中的值方法
2018/08/27 Javascript
微信小程序开发之点击按钮退出小程序的实现方法
2019/04/26 Javascript
jquery实现垂直无限轮播的方法分析
2019/07/16 jQuery
微信小程序:报错(in promise) MiniProgramError
2020/10/30 Javascript
[01:33]完美世界DOTA2联赛PWL S3 集锦第二期
2020/12/21 DOTA
[01:07:20]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第二场 2月2日
2021/03/11 DOTA
用Python实现web端用户登录和注册功能的教程
2015/04/30 Python
详解Python map函数及Python map()函数的用法
2017/11/16 Python
python pandas 组内排序、单组排序、标号的实例
2018/04/12 Python
python爬取网页内容转换为PDF文件
2020/07/28 Python
pyinstaller打包opencv和numpy程序运行错误解决
2019/08/16 Python
python用opencv完成图像分割并进行目标物的提取
2020/05/25 Python
基于HTML5的齿轮动画特效
2016/02/29 HTML / CSS
英国家喻户晓的家居商店:The Range
2019/03/25 全球购物
巴西备受欢迎的服装和生活方式品牌:FARM Rio
2020/02/04 全球购物
电话销售经理岗位职责
2013/12/07 职场文书
幼儿园消防演练方案
2014/02/13 职场文书
优秀工会工作者事迹材料
2014/06/02 职场文书
安全教育日主题班会
2015/08/13 职场文书
三严三实学习心得体会(精选N篇)
2016/01/05 职场文书
职业生涯规划书之大学四年
2019/08/07 职场文书
Python天气语音播报小助手
2021/09/25 Python
类和原型的设计模式之复制与委托差异
2022/07/07 Javascript