php代码 注释,今天你的PHP代码写好注释了吗

原标题:今天你的PHP代码写好注释了吗

注释

有个段子:程序员最恨写注释和不写注释的人。个人认为注释主要作用是方便别人或者自己以后能快速理解这段代码逻辑和提升开发效率,这样要说的是如何使用注释来提升开发效率。

总所周知,PHP 是弱类型语言,变量的类型是可以变的,但在实际业务中,一个变量或者函数的返回值往往是确定的,确定的类型能提升我们的编码效率,也能把一些低级的错误(弱类型不代表无类型)扼杀在摇篮里。

PHP 主要通过类型声明来说明变量的类型,PHP7 开始允许更多的函数参数类型限定。比如下面这个例子,声明入参是 int 类型,但使用了 array函数来处理,PhpStorm 能给出实时的提醒。

3d3066440b15589293a151bab2aba1a0.png

调用函数参数错误的话也有提示:

af5a97148c3186deca4d9b544d159b72.png

但 PHP 会有隐式类型转换,如上面传入浮点数的时候并没有提示错误,因为这也是合理的。不过 PHP 可以开启严格模式来检查此类错误。

caa0c8af455cadbce8bcd9d27c79ddd1.png

PHP 内置的类型声明基本上够用了,但一般使用注释来实现更加丰富的功能。PHPDoc 是注释 PHP 代码的非正式标准,它有许多不同的标记可以使用。PhpStorm 能根据函数/类方法自动生成基本的标记:

4c244d36e9da093eca782e96453fd52a.gif

基本标记 @param 和 @return 也很好理解,参数和返回值,作用和 PHP 自带的类型声明差不多,主要用来限制调用方传参和使用返回值。除了这两个标记之外,还有很多 其它 比较好用的标记。

/**

* @author A Name 2018-01-01

* @link https://docs.phpdoc.org/references/phpdoc/tags/link.html

*/

namespaceDemo;

useException;

/**

* Class DemoClass

* @package Demo

* @version 1.0

*/

classDemoClass

{

/**

* @var array

*/

public$names=[];

/**

* methodA

* @param int $a param a

* @return int

* @throws Exception when {$a} < 0

*/

functionmethodA(int$a)

{

if($a<0)

{

/**

* @see Exception::getMessage()

*/

thrownewException('test');

}

return$a+1;

}

/**

* @deprecated

* @since 1.0 deprecated

* @todo del it

* TODO del it

*/

functionmethodB(){}

}

$demoA=newDemoClass();

$demoA->methodA([]);

array_keys($demoA->methodA(1));

$demoA->methodB();

$demoA->methodA($demoA->names);

$str='DemoClass';

/**

* @var DemoClass $demoB

*/

$demoB=new$str();

@author ,顾名思义就是说明代码的作者。留下你的大名和时间,以后有问题了好找你。

@link ,主要是用来放一些相关的链接。

@package ,包名。 @version ,版本。

@Exception ,表示抛出的异常,当调用方未正确处理异常时会有提示。

e610fbb208cf73722d852312245cac27.png

@see ,表示去这里看相关的参考,有点像 @link ,一般用作指向代码,方便 IDE 跳转查看。

f29ae5a396a0c6301f09b2c973ddebcc.png

@deprecated ,表示这个方法以及弃用了。调用弃用的代码会有提示:

b12965597618a6e27de9088e690d6b09.png

@since ,记录版本变化,比如上面的例子说明 1.0 版本弃用了这个方法。

@todo 和 TODO (PhpStorm 标记语法),表示这里还需优化改动一下,但现在还没改(

以后估计也不会改了

)。在提交代码时 PhpStorm 会提示你还有几个 todo。

@var ,声明变量的类型。这个标记看似鸡肋(一般 IDE 都有类型推导),但在 PHP 动态语言中有时非常有用。比如下面这个例子类名是字符串,IDE 就无法自动推导类型了:

45eac4303e34bb6c31b16299b3e7c5fa.png

这是我们可以显式的注释一下:

2dc769b313c1bbc32ec4e5a937db6388.png

本文来源网络,侵立删!返回搜狐,查看更多

责任编辑: