PHP多行注释必须用/.../,不可嵌套,不支持//或#;/*.../是专用于文档的PHPDoc注释,需遵循特定格式,工具链仅识别它。
PHP 多行注释用 /* */,不是 // 或 #,也不能嵌套。
/* ... */
PHP 的多行注释必须以 /* 开始、*/ 结束,中间内容可跨任意行。它会完全忽略其中所有字符(包括 PHP 代码、HTML、空格和换行)。
常见误写:
/**/(少一个 *)→ 实际是 / 除法 + **/ 语法错误// 想“延续”多行 → 每行都得单独写,不是多行注释/* */ 里再写 /* */ → 不支持嵌套,第一个 */ 就结束注释,后面内容可能报错/* 这是合法的多行注释 可以写很多行 也能包含 echo "hello"; 这样的代码,但不会执行 */
/* */ 和文档块注释 /** */ 的区别
/** */ 是 PHPDoc 风格的文档块注释,属于 /* */ 的子集,但有约定俗成的格式(如 @param、@return),主要用于生成 API 文档或被 IDE 识别。普通多行注释不需要遵守这些规则。
关键差异:
/* */:纯注释,解释逻辑、临时屏蔽代码,无结构要求/** */:推荐用于函数/类/属性上方,第一行通常空或只含 /**,每行以 * 开头,结尾为 */
/** */
/**
* 计算用户积分总和
* @param array $scores
* @return int
*/
function sumScores(array $scores): int {
/* 临时屏蔽旧逻辑
return array_sum($scores) * 2;
*/
return array_sum($scores);
}
只要在 /* */ 范围内,任何内容(包括 、HTML 标签、SQL 片段)都不会被解析或执行,也不会触发语法检查。
但要注意:
/* ),会导致解析器混乱,可能报 Parse error: syntax error
/* "hello )不影响,因为整段被跳过多行注释常被用来临时注释掉大段代码,但上线前容易忘记清理。尤其当里面包含数据库密码、API Key 或调试用的 var_dump($_SERVER) 时,如果文件被直接暴露(如配置错误导致 PHP 源码被当作文本返回),注释内容也会一并泄露。
安全建议:
grep -r "/*" --include="*.php" . | grep -E "(password|key|secret|dump)" 快速扫描YOUR_API_KEY_HERE)并加 TODO 标记最麻烦的情况不是不会写,而是写完没删 —— 注释越长,遗忘概率越高。