ThinkPHP模板注释失效主因是定界符冲突或标签书写不规范:仅支持{*...*}(编译剔除)和<!--...-->(浏览器解析),禁用PHP注释;定界符修改后注释需同步更新,且不可含空格换行,同时须清空runtime/view缓存并关闭模板缓存。

ThinkPHP模板注释失效,通常不是PHP层面的注释问题,而是模板引擎对{/* */}这类语法的识别失败。根本原因往往出在定界符冲突或标签书写不规范上,而非注释符号本身写错了。
确认注释语法是否被模板引擎支持
ThinkPHP内置模板引擎只识别两种注释形式: - `{* 这是模板注释 *}`:编译时完全剔除,不输出到 HTML - ``:原样保留,由浏览器解析不能用 PHP 的 // 或 /* */ 写在模板里,它们会被当作普通文本输出,甚至可能触发解析错误。
检查定界符是否被修改且未同步更新注释写法
如果你改过 `template.tpl_begin` 和 `template.tpl_end`(如设为 ``),那原注释 `{* ... *}` 就不再生效——必须改成 `` 才能被识别。 常见疏漏: - 配置改了,但模板里还用旧的 `{*` - 定界符设成 `[[` 和 `]]` 后,`{*[...]*}` 会因开头不是 `[[` 而被忽略,整段当纯文本输出 - `tpl_begin` 或 `tpl_end` 设为空字符串 `''`,会导致整个模板停止解析,所有标签(包括注释)都原样输出排查空格与换行导致的标签失效
模板注释必须严格紧贴定界符,中间不能有空格或换行: - `{* 注释内容 *}` ✅ - `{* 注释内容 *}` ❌(`{*` 和 `*}` 中间多了空格,整个标签被当作普通文本) - `{* 注释内容 *}` ❌(换行破坏标签结构,解析器直接跳过)同样,变量标签如 {$name} 一旦写成 { $name },也会原样输出,容易误判为“注释没生效”。
验证是否被缓存干扰
模板修改后注释仍不生效,大概率是缓存未清除: - 删除 `runtime/view/` 下全部文件(不要只删某一个) - 开发环境建议关闭模板缓存:在 `config/view.php` 中设置 `'cache' => false` - 检查是否启用了 opcode 缓存(如 OPcache),重启 Web 服务确保加载最新模板不复杂但容易忽略
立即学习“PHP免费学习笔记(深入)”;



















