PHP多行注释必须用/.../,不可嵌套,不支持//或#;/*.../是专用于文档的PHPDoc注释,需遵循特定格式,工具链仅识别它。

PHP 多行注释用 /* */,不是 // 或 #,也不能嵌套。
多行注释的正确写法是 /* ... */
PHP 的多行注释必须以 /* 开始、*/ 结束,中间内容可跨任意行。它会完全忽略其中所有字符(包括 PHP 代码、HTML、空格和换行)。
常见误写:
- 写成
/**/(少一个*)→ 实际是/除法 +**/语法错误 - 混用
//想“延续”多行 → 每行都得单独写,不是多行注释 - 在
/* */里再写/* */→ 不支持嵌套,第一个*/就结束注释,后面内容可能报错
/* 这是合法的多行注释 可以写很多行 也能包含 echo "hello"; 这样的代码,但不会执行 */
/* */ 和文档块注释 /** */ 的区别
/** */ 是 PHPDoc 风格的文档块注释,属于 /* */ 的子集,但有约定俗成的格式(如 @param、@return),主要用于生成 API 文档或被 IDE 识别。普通多行注释不需要遵守这些规则。
立即学习“PHP免费学习笔记(深入)”;
关键差异:
-
/* */:纯注释,解释逻辑、临时屏蔽代码,无结构要求 -
/** */:推荐用于函数/类/属性上方,第一行通常空或只含/**,每行以*开头,结尾为*/ - PHP 解析器对两者处理方式一致(都跳过),但工具链(如 phpDocumentor、PHPStan)只解析
/** */
/**
* 计算用户积分总和
* @param array $scores
* @return int
*/
function sumScores(array $scores): int {
/* 临时屏蔽旧逻辑
return array_sum($scores) * 2;
*/
return array_sum($scores);
}
注释里写 PHP 代码会怎样?
只要在 /* */ 范围内,任何内容(包括 、HTML 标签、SQL 片段)都不会被解析或执行,也不会触发语法检查。
但要注意:
- 如果注释跨越了 PHP 开始/结束标签边界(比如
/* ),会导致解析器混乱,可能报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 标记 - IDE 中启用 “Show TODO comments” 提醒自己清理,但别依赖它
最麻烦的情况不是不会写,而是写完没删 —— 注释越长,遗忘概率越高。











