<p>ThinkPHP 6.x 默认不支持{//}和{# #}注释,必须安装think-template扩展并配置'type' => 'Think'才生效;否则应使用<?php // ?>或/ /等PHP原生注释。</p>

ThinkPHP 5.1 和 6.0 的模板注释语法表面相似,实则底层解析机制不同,混用会导致注释不生效、模板解析失败,甚至引发 Parse error。关键不在“怎么写”,而在于“被谁解析”和“是否被识别”。
注释语法本身差异不大,但生效前提完全不同
两者都支持以下常见注释写法:
-
{// 这是一行注释}(TP5.1 原生支持,TP6.x 仅在type => 'think'下有效) -
{# 这是另一行注释 #}(TP5.1 支持;TP6.x 默认 PHP 模板引擎下会被当成 PHP 代码报错) -
<!-- HTML 注释 -->(始终有效,但仅对 HTML 层可见,不参与模板逻辑解析)
⚠️ 注意:TP6.x 默认使用原生 PHP 模板引擎(type => 'php'),此时 {//...} 和 {#...#} 不是注释,而是非法语法——PHP 解析器会直接报错,如 Unexpected '{'。
TP6.x 中让注释“真正生效”的两个必要条件
想在 TP6.x 里安全使用 ThinkTemplate 风格注释(如 {//...}),必须同时满足:
立即学习“PHP免费学习笔记(深入)”;
- 安装扩展:
composer require topthink/think-template - 配置启用:
config/view.php中明确设置'type' => 'Think'(注意首字母大写)
缺一不可。只装包不改配置,或只改配置没装包,都会导致注释被忽略或报 Class not found 错误。
降级兼容方案:不依赖注释语法,改用安全写法
若项目需同时兼顾 TP5.1 和 TP6.x,或无法稳定维护 think-template 包,推荐以下零风险做法:
- 统一用标准 PHP 注释:
<?php // 这里写说明 ?>(在type => 'php'下 100% 安全) - 逻辑块内注释改用
/* ... */包裹:<?php /* if 条件复杂,此处加说明 */ if ($a && $b): ?> - 彻底规避
{#...#}和{//...}—— 它们在 TP6.x 的默认模式下没有回退机制,不是“不显示”,而是“不让加载”
调试时快速验证注释是否被识别
在模板中插入测试片段:
- 写
{// test-comment}后刷新页面,若空白或报错 → 当前未启用 think-template 引擎 - 写
<?php // test-php-comment ?>仍可正常访问 → 确认当前走的是 PHP 模板模式 - 查看缓存文件(
runtime/view/xxx.php):若注释已消失,说明被模板引擎过滤;若还存在//或报错,则是 PHP 层解析阶段问题



















