<p>ThinkPHP各版本模板注释本质均为不渲染、不输出的开发者标记;5.1支持{//}和{% comment %},仅限think引擎;6.0默认禁用需手动启用;8.0改用{# #}和{## ##};跨版本推荐统一使用HTML注释<!-- -->。</p>

ThinkPHP 各版本模板注释本质都是“不渲染、不输出”的开发者标记,但语法支持、解析机制和兼容边界差异明显。选错写法轻则被当作普通文本显示,重则导致编译失败或工具识别异常。
5.1:唯一支持 ThinkTemplate 专属注释的版本
5.1 是首个引入 ThinkTemplate 引擎原生注释语法的版本,提供两种写法:
- {// 单行注释} —— 从 {// 开始到行尾或 } 结束,内容完全剥离
- {% comment %}多行注释{% endcomment %} —— 编译时整块忽略,支持换行缩进
注意:这两种语法仅在 'type' => 'think' 模板引擎下生效;若配置为 'type' => 'php'(即原生 PHP 模板),会直接报错或原样输出。
6.0:默认禁用 ThinkTemplate,需手动启用
TP6 默认使用原生 PHP 模板引擎(type => 'php'),因此只认 HTML 注释 <!-- --> 和 PHP 块内注释 <?php // ?>。
立即学习“PHP免费学习笔记(深入)”;
- 若项目沿用 5.1 的 {//} 或 {% comment %},必须执行
composer require topthink/think-template - 并在
config/view.php中显式设 'type' => 'think' - TP6.3+ 默认开启不可关闭的模板缓存,注释修改也会触发重新编译(影响部署节奏)
8.0:统一采用 {# #} 语法,更贴近 Twig 风格
TP8 废弃了 5.1 的 {//} 和 {% comment %},改用更简洁、工具友好度更高的 {# #} 和 {## ##}:
- {# 单行注释 #} —— PhpStorm/VS Code 插件普遍支持高亮与折叠
- {## 多行注释 ##} —— 支持跨行,但禁止嵌套标签(如 {## {volist}...{volist} ##} 易导致可视化工具误判)
该语法由 ThinkTemplate 在编译阶段直接剔除,不进入缓存文件,也不影响运行性能。
跨版本安全写法推荐
若项目需长期维护或存在多版本共存场景,最稳妥的方案是:
- 统一使用标准 HTML 注释
<!-- 这是说明 -->——所有版本都兼容,不依赖引擎类型,也不会因配置变更失效 - 避免混用
<?php // ?>—— 在 tpl_deny_php=true 安全策略下会被拦截,且非模板语义 - 不指望注释驱动代码生成——模板注释不会被任何主流工具(Swagger、think-orm-gen 等)读取或解析,元信息应放在 PHPDoc 或配置中



















