PHP多行注释必须用/ /,//不支持跨行注释;/ /可安全屏蔽任意代码块,但不可嵌套;/* /专用于PHPDoc文档注释,不控制执行逻辑。

PHP 多行注释用 /* */,别混用 // 套多行
PHP 不支持用连续的 // 注释跨多行逻辑块——它只会注释掉每行 // 后面的部分,中间若有未加 // 的行,代码照常执行,极易埋下静默 bug。真正安全的块注释只有 /* */,可跨任意行,且能嵌套在函数、条件或循环内部而不破坏结构。
常见错误现象:
//$sql = "SELECT * FROM users";看着像注释了三行,但第二行实际是语法错误(
//WHERE status = 1;
//echo $sql;
WHERE 孤立),或更糟:如果第二行没报错(比如写成 // $x = 1 + 2),第三行却漏了 //,echo $sql; 就会意外执行。
-
/* */内可自由换行、缩进,适合临时屏蔽整段调试代码 - 不要在
/* */中再写/* */—— PHP 不支持嵌套块注释,第一个*/就会提前闭合 - IDE(如 PHPStorm、VS Code)通常支持快捷键(如
Ctrl+/)批量切换行注释,但对已选中多行执行时,它默认插的是//;需手动替换为/* */才算真正“注释掉代码块”
用 /** */ 写文档注释,别和普通块注释搞混
/** */ 是 PHPDoc 标准的文档注释语法,不是功能注释。它被 phpDocumentor、IDE、类型分析工具(如 PHPStan)识别,用于生成 API 文档或提供参数提示,但**不参与运行时逻辑控制**——你不能靠它临时禁用代码。
使用场景:
/**
* 用户登录验证
* @param string $username
* @param string $password
* @return bool
*/
function login($username, $password) { ... }
立即学习“PHP免费学习笔记(深入)”;
优六系统(全称:优六企服系统)是在Util6MIS基础上组合CMS等插件及子系统的综合信息化管理系统。 Util6MIS(软著全称:优六信息化管理框架系统)是一款免费的通用信息化快速开发框架,该框架可快速集成各类系统开发。 系统后台采用.NET6 + Layui作为UI支撑,操作界面简洁,项目结构清晰,功能模块化设计,支撑框架轻量高效,代码层级分离,注释完整,可快速重构,提高开发效率。
- 普通块注释用
/* */,目标是「让这段代码不执行」 - 文档注释用
/** */,目标是「让机器和人读懂这段代码干什么」 - 混用会导致 IDE 提示「@param not in a docblock」等警告,且 phpDocumentor 无法提取正确信息
注释代码块时,警惕 ?> 标签干扰
在 区块内用 /* */ 注释没问题;但如果注释跨越了 PHP 标签边界,比如:
/*这段注释会失效——因为
echo "hello";
?>
test
echo "world";
*/
*/ 出现在 HTML 段落里,PHP 解析器根本看不到它,导致从 /* 开始到文件末尾全部被当作 PHP 代码解析,大概率报错 Parse error: syntax error, unexpected '。
- 块注释必须完整落在
开启、?>关闭的范围内 - 若要注释含混合 HTML 的代码块,先确认当前是否处于 PHP 模式;不确定时,用
显式包裹更稳妥 - 模板文件(如
.phtml)中,推荐把逻辑抽成函数,再用/* */注释函数调用,而非直接注释混排片段
临时禁用大段代码,优先用 if (false) 而非注释
当需要反复开关某段逻辑(比如调试接口响应、绕过缓存),用 /* */ 注释再取消注释,容易漏掉 */ 或误删换行,引发语法错误。此时更可靠的做法是用死条件包裹:
if (false) {
$data = fetchFromApi();
saveToCache($data);
}
- 语法始终合法,IDE 不报错,版本工具 diff 清晰
- 比注释更易搜索定位(搜
if (false)即可) - 上线前必须清理,否则可能隐藏性能问题;建议配合 TODO 注释:
// TODO: remove if(false) before deploy
注释是给人看的,但 PHP 解析器只认语法。最易被忽略的点:你以为注释掉了,其实只是视觉上灰了——只要没用对 / /、没避开标签边界、没意识到 /* / 不具备屏蔽作用,那段代码就还在那儿跑。










