PHP 注释 (Comments) 有两种类型,一种是单行注释,一种是多行注释。
4 s3 u( ^$ X* k6 X6 K% q- |
. V- B8 z9 [' h+ I( CPHP 单行注释语法8 P% y6 F& I* i) G# K4 D( x
3 n8 L( S: l0 |( E+ H1 b
在一行中所有 DE>//DE> 符号右面的文本都被视为注释, 因为 PHP 解析器忽略该行 DE>//DE> 右面的所有内容。示例如下,红色字体部分就是单行注释的内容。
2 F+ K8 T) C4 R1 l$ d% J- d, y4 O. I- c/ T2 X$ ]. c
<?php$ Y1 A, L7 ? G6 k( ~) D( m
echo "Blabla.cn"; // 这是单行注释
# p* |9 i6 {1 T- K: Q?>
0 |0 l6 R% u4 Y; `你也这样这样写,一行只写注释,不写代码,如下:
2 ]1 @# t3 X) L9 D/ w# }2 H8 b2 T4 O
<?php
# h% v9 p& S. N" q0 c D// 这是单行注释
8 ]8 o/ Q) \+ F4 decho "Blabla.cn"; : g2 {" P2 h! C& {
// 这是单行注释
$ N8 k+ \* N+ G* n?>
8 o7 R. L2 x" H( j" uPHP 多行注释语法
5 C1 p* f+ ]6 g4 C
8 j+ F5 d+ | q: i& SPHP 多行注释以 DE>/*DE> 开头,以 DE>*/DE> 结束。在 DE>/*DE> 和 DE>*/DE> 之间,可以写多行注释。
) ?4 q* [# q; O: I5 V/ G" R9 @
" T: j* }5 m/ a0 a( u5 u4 O* L示例如下,红色部分就是多行注释的内容。% O0 J2 ?/ p C) L& p" y7 g9 G
1 h3 D* w- K, @2 y<?php
$ l! V9 C+ E$ \& k4 F# vecho "Blabla.cn";/ s9 e5 B5 b6 R1 J8 K
/*7 ]. V! D( P; h. f
这是多行注释
- F* u) @+ W+ v) r5 P& V4 K( e% M% h这是多行注释' M: n+ B8 r# s: r. Z
*/8 P. o2 e6 N+ X+ t/ I
?>$ K. r& V* M5 I: V) t' C) }
4.1 块注释
# g! k( b1 ^5 g0 Q6 K% B* z: P+ K
块注释通常用于提供对文件,方法,数据结构和算法的描述。块注释被置于每个文件的开始处以及每个方法之前。它们也可以被用于其他地方,比如方法内部。在功能和方法内部的块注释应该和它们所描述的代码具有一样的缩进格式。 5 p& g1 b6 `$ J2 C7 e7 T
$ \# I0 J; u: P6 x% ?9 W
块注释之首应该有一个空行,用于把块注释和代码分割开来,比如:
0 C$ s1 J2 |' r$ r4 u$ {2 h! b5 C" U) I& i5 y
" T ~/ o& x+ V# G5 X1 h0 n
/* 5 H( K& O6 k: n! h1 o
* 这里是块注释
* h5 j7 W& a: |* l/ h! O*/, G3 ?# o0 _# H, Q$ I( @. A
2 z) M: q6 {4 `& P
/ h% C/ A; A/ b块注释可以以/*-开头,这样indent(1)就可以将之识别为一个代码块的开始,而不会重排它。
# D5 p6 T4 f7 N& [+ X
. X/ r3 ^3 e( u2 B, O* F0 J5 w. `# @0 x
/*- - m0 Y. W8 ?" x
* 如果想被忽略,可是使用特别格式的块注释
) L# w8 U$ v7 u6 w4 s9 \*+ D$ A' [; c4 ?, X5 a1 z1 i
* one
. |3 w( K6 r, m8 u. P. k* two
* W6 H0 Z4 i9 g' H' i* three! c2 ?, v+ n5 }. }4 W
*/
( g1 d) p+ T3 Z) E6 S* K6 }+ J8 D |$ w
) z( e+ z$ n0 E$ z
注意:如果你不使用indent(1),就不必在代码中使用/*-,或为他人可能对你的代码运行indent(1)作让步。
( o* K* P$ @/ Z8 x! j- |4.2 单行注释
2 x8 |8 r# V6 o. T0 A6 b" D; i" k" B: s; |
短注释可以显示在一行内,并与其后的代码具有一样的缩进层级。如果一个注释不能在一行内写完,就该采用块注释。单行注释之前应该有一个空行。以下是一个代码中单行注释的例子:
5 _3 o% j2 O' [
7 b- m& q' d9 h* o% @' Z4 p$ Y3 g& @2 @8 |. D
if (condition) { * o) J- @% G9 I' Q* S; Y: y: ~
# r8 |9 V5 t* K! `/* 以下代码运行的条件 */
& h: D0 J3 x, @ m...0 }% L' A: R% G6 ?7 ]9 i% a
}' v/ t2 M0 D+ @. f0 x& o* \
! \4 w2 e9 ~' \" _
4.3 尾端注释
4 s7 K" L4 F+ a6 [3 H: y4 `5 X* |' z; ~& `) k: W" v: s
极短的注释可以与它们所要描述的代码位于同一行,但是应该有足够的空白来分开代码和注释。若有多个短注释出现于大段代码中,它们应该具有相同的缩进。
- n3 X' o7 p' X: T* g8 }- e" N% @) p5 Y- q" `' p" p
以下是一个代码中尾端注释的例子: 4 B' G: J1 w3 N- }- \
5 {0 o+ {; }6 z0 c. F& T3 T
8 j+ q1 {! c/ I( J. d pif ($a == 2) {
! h3 C: e3 ?1 W: f7 greturn TRUE; /* 对单一条件的说明 */+ g+ ?! l3 h# G9 H' H# a
} else {, @- ~- Z: c D$ ~3 m
return isPrime($a); /* 其余的条件 */$ W8 b% p" V; F; x) w. {- K
}* y' I. s# a1 T) v
# v' J" s1 o# P- ~+ o1 f2 ]
4.4 行末注释
, ^0 N1 G/ R4 ^8 T7 N; x
) n9 X! Q* p& W( V7 m4 K& o4 v注释界定符"//",可以注释掉整行或者一行中的一部分。它一般不用于连续多行的注释文本;然而,它可以用来注释掉连续多行的代码段。以下是所有三种风格的例子: 3 _3 R9 C2 [' |6 b9 A8 V# x
, W$ J+ k+ l2 E: [' o/ r5 w
1 g. T% h0 _2 T. sif ($foo > 1) {
4 {/ q# ]5 l1 b. v( D+ b1 |+ |( E
// 第二种用法. 8 P: q6 R/ E' i) u3 L3 Q$ B! n
...+ w' W) P# z# M9 p
}6 o0 r$ x" j3 x' q; g; j; h: h
else {/ g* q5 `, v$ K# G4 H! }
return false; // 说明返回值的原因6 K' d8 E+ g/ ~5 Z) o
}
9 K9 @! y4 K, ?+ O# B" B! Y5 O$ p( d
//if ($bar > 1) {
m0 {5 E. p+ c9 D//
0 m8 ^" p8 l) ^1 Z" Z// // 第三种用法
/ J2 e- n& f D: _// ...6 B' f b/ Z& J. e) L( e
//}) s1 V! l: M* ~8 I, L6 v
//else {
$ d [, s! ~6 u' N# Z8 K1 G4 D. P// return false;
9 V7 G. K, i2 `0 [; i. F. {//}
! r. h: g7 h4 T4.5 文档注释# Z% w8 C# z) k1 T4 z3 ], m' h* x/ ?
! I% W" [% _; b( E文档注释描述php的类、构造器,方法,以及字段(field)。每个文档注释都会被置于注释定界符/**...*/之中,一个注释对应一个类或成员。该注释应位于声明之前:
$ U: u0 e7 f/ s) O: Y# W5 R! t- `" \) Q/ T" h; G/ {- s
5 X: d( ?% `2 F+ a. A! U% C/**
' K/ }. }! ]* k$ \0 O7 \* 说明这个类的一些 ...
+ k. F" ^" d% D*// Q1 x: p8 t8 @ D8 [& T- b
class Example { ...
' T5 {2 m4 P9 k2 _" M9 D- o) f7 F8 \- V+ A) ~; S
* e& S, Z( E3 h5 `) v/ Z. F$ p
注意顶层(top-level)的类是不缩进的,而其成员是缩进的。描述类的文档注释的第一行(/**)不需缩进;随后的文档注释每行都缩进1格(使星号纵向对齐)。成员,包括构造函数在内,其文档注释的第一行缩进4格,随后每行都缩进5格。 ( E# U; ] U- t9 Y
D+ t: `9 g9 d' N; H
若你想给出有关类、变量或方法的信息,而这些信息又不适合写在文档中,则可使用实现块注释(见5.1.1)或紧跟在声明后面的单行注释(见5.1.2)。例如,有关一个类实现的细节,应放入紧跟在类声明后面的实现块注释中,而不是放在文档注释中。 ! c3 Q/ G1 v; J+ ]1 j' |, c
7 \! c! \" x% o
文档注释不能放在一个方法或构造器的定义块中,因为程序会将位于文档注释之后的第一个声明与其相关联。) N: m: u9 }6 P6 H6 l- U/ s
|