PHP只支持/ ... /一种原生多行注释语法;/* ... /专用于PHPDoc文档块,普通注释应避免使用,以防工具误解析;嵌套注释不被支持,且需注意闭合、空白符及上下文有效性。

PHP 多行注释没有“唯一规范”,但有明确的语法支持和实际使用中的强烈推荐做法。
PHP 支持哪几种多行注释写法
PHP 本身只有一种原生的多行注释语法:/* ... */。它能跨越任意行数,只要开头是 /*、结尾是 */,中间内容全被忽略。
注意:// 和 # 都是单行注释,强行换行会导致第二行不被注释——这不是多行注释,只是连续写多个单行注释。
/* 这是合法的多行注释 *//* 第一行
(在代码中换行即可,不用加
第二行
第三行 */\n)// 第一行
→ 是两行独立单行注释,不是多行注释结构
// 第二行
为什么不要用文档块(/** ... */)当普通多行注释
/** ... */ 是 PHPDoc 标准的文档块起始标记,会被 phpdocumentor、IDE(如 PhpStorm)、静态分析工具(如 PHPStan)识别为「函数/类/属性的说明」,而非普通注释。
立即学习“PHP免费学习笔记(深入)”;
如果你只是想临时屏蔽一段代码或加个说明,却用了 /**,可能引发意外行为:
- IDE 自动补全时弹出错误提示(比如 “Missing @return”)
- 运行
php -l不报错,但后续生成 API 文档时把你的调试注释当成正式接口描述 - 某些代码格式化工具(如 PHP-CS-Fixer)会警告或自动改写成标准 PHPDoc 格式
✅ 正确做法:普通多行注释统一用 /* ... */;只有给函数/类/属性写说明时,才用 /** ... */ 并严格遵循 PHPDoc 标签(如 @param, @return)。
实际写多行注释时容易踩的坑
最常见错误不是语法错,而是嵌套和边界处理不当:
-
/* 外层 /* 内层 */ 结束外层 */→ PHP 不支持嵌套,第一个*/就结束整个注释,后面变成可执行代码,大概率报错 /* 换行后缩进太多,结果复制粘贴时末尾多了空格+*/,导致注释没闭合-
/*后直接换行,再写内容,没问题;但若写成/*
,要注意编辑器是否在行尾加了不可见字符(如 BOM),极少数旧环境会解析异常
内容
*/ - 在字符串或正则中误写
/*,比如$sql = "SELECT /* FROM users";→ 这里/*不是注释开始,而是字符串内容
/* 正确的多行注释示例 */
$connection = new PDO($dsn, $user, $pass);
/* 临时跳过以下逻辑用于调试:
- 用户权限检查
- 日志记录
- 缓存更新
*/
// $user->checkPermission();
// $logger->log('access');
// $cache->invalidate($user->id);
真正要注意的不是“怎么写”,而是“什么时候不该写”——比如别在 JSON 输出、SQL 拼接、HTML 模板混排里加 /* */ 注释,那些地方根本不会被 PHP 解析。多行注释只对 PHP 解析器生效,其他上下文里它就是普通文本。











