php代码注释最佳实践
虽然大家生成php文档基本都不使用php document,但写代码总需要注释的,而且有些注释不是给我们自己看的,而是给编辑器看的。毕竟php不是强类型语言,许多补全提示都依赖注释。
我所常用的或者常见的注释
- 在类上,比如author信息,类相关信息,以及一些对类属性和方法补充的注释
- 在函数或者方法上,比如没处理的异常,接受参数类型,响应参数类型等
- 在代码中 其实最常用就是 @var ,用来申明变量类型,例如下面例子
日常使用例子
ide在一定程度中会自动补全代码,但有些不确定的类型,ide就没辙了,所以这时候就需要注释来凑,比如下面的 @var
use Yii;
/**
* This is the model class for table "posts".
* Class Posts
* @see \yii\db\ActiveRecord
* @author jenson
* @package app\models
* @property int $id 文章主键 # new了这个类后,可以将直接调用该属性,一般这类属性由魔术方法处理
* @property string|null $title 标题
* @property string|null $content 文章内容
* @property string|null $created_at 创建时间
* @property string|null $updated_at 更新时间
* @method string testMethod($param) 测试方法 # new了这个类后,编辑器可以识别到该方法
*/
class Posts extends \yii\db\ActiveRecord
{
/**
* {@inheritdoc} # 继承文档
* @return string # 返回字符串类型
*/
public static function tableName()
{
return 'posts';
}
/**
* @param string $name # 参数
**/
public function testGetDb($name) {
/**
* @var \yii\db\Connection $db # 申明下面的$db变量的类型,方便后面调用
*/
$db = \Yii::$app->get('db');
$db->getQueryBuilder()->db;
}
}
完整的注释列表
| Tag | Element | Description |
|---|---|---|
| api | 方法 | 申明一个api |
| author | 任何 | 作者 |
| category | 文件,类 | 将一系列软件包组合在一起。 |
| copyright | 任何 | 版权 |
| deprecated | 任何 | 说明当前文档标注内容属于弃用 |
| example | 任何 | 该标记用于解析一段文件内容,并将他们高亮显示。Phpdoc会试图从该标记给的文件路径中读取文件内容 |
| filesource | 文件 | 和example类似,只不过该标记将直接读取当前解析的php文件的内容并显示。 |
| global | 变量 | 申明全局变量 |
| ignore | 任何 | 忽略指定内容 |
| internal | 任何 | 内部使用 |
| license | 文件 | 许可证 指向一个资源 |
| link | 任何 | 链接 |
| method | 类 | 申明一个方法 |
| package | 文件,类 | 将关联的元素分类为逻辑分组或细分。 |
| param | 方法、函数 | 什么其需要的参数 |
| property | 类 | 申明一个类的属性 |
| property-read | 类 | 同上 |
| property-write | 类 | 同上 |
| return | 方法、函数 | 返回 |
| see | 任何 | 指向其他地方 |
| since | 任何 | 指示相关元素的可用版本 |
| source | 任何 | 参考来源 |
| subpackage | 文件、类 | 所属子包 |
| throws | 方法、函数 | 抛出的异常 |
| todo | 任何 | 记录待做的事 |
| uses | 任何 | 表示对单个关联元素的引用 |
| var | 属性 | 申明一个变量 |
| version | 任何 | 版本 |
注释元素
- 类名
- 基本变量类型,int or integer、float、bool or boolean、array、resource、 null、callable
- 关键字,mixed、void、object、 false or true、self、static、$this
-
数组类型,
/** * @var string[] $strings 字符串数组变量 * @var callable[] $callables * **/ -
多类型组合
/** * @return string|null * **/