<p>ThinkPHP模板注释是专为开发阶段提升可读性的工具,编译时被完全剥离,不影响性能与安全;支持{%-- --%}和{ }两种语法,需避免混用;应说明“为什么”而非“做什么”,并配合布局标记模块边界。</p>

ThinkPHP 模板注释不是用来“隐藏逻辑”或“保护代码”的安全手段,而是专为开发阶段服务的可读性工具——它让模板更干净、协作更高效、维护更省力。
模板注释只在编译后消失,不参与运行逻辑
ThinkPHP 的模板注释(如{%-- 这是一段注释 --%} 或 {* 这是 Smarty 风格 *})在模板首次编译时就被完全剥离,最终生成的 PHP 缓存文件里不会包含任何注释内容。这意味着:
- 它不影响页面性能,也不增加输出体积
- 它对前端不可见,浏览器源码里找不到,也不存在“被查看风险”
- 它和 PHP 代码里的//或/* */作用一致,仅面向开发者,不改变行为
用对注释类型,避免误删关键逻辑
ThinkPHP 默认支持两种注释语法,用途略有不同:
- {%-- 单行/多行注释 --%}:标准 ThinkTemplate 注释,推荐日常使用;支持嵌套,IDE 通常能高亮识别
- {* ... *}:兼容 Smarty 风格,适合已有 Smarty 项目迁移或团队习惯统一
- ⚠️ 切勿混用:{%-- {* 混写会报错 *}--%},会导致模板编译失败
注释要写“为什么”,别写“做什么”
好的模板注释不是复述代码,而是交代上下文。例如:
立即学习“PHP免费学习笔记(深入)”;
- ❌ 差示例:{%-- 输出用户名 --%} {$user.name}
- ✅ 好示例:{%-- 登录态未校验时 fallback 为空字符串,防 Notice 报错 --%} {$user.name|default='游客'}
- ✅ 另一例:{%-- PC 端需显示完整标题,移动端截断避免换行溢出 --%} {:substr($title, 0, 12)|raw}
配合模板布局与 include,用注释标明模块边界
在复杂页面中,用注释标记区块来源,能快速定位修改点:
- {%-- START: 用户操作栏(来自 @widget/user_actions.tpl) --%}
- {%-- END: 用户操作栏 --%}
- 搭配 {include file="widget/user_actions"} 使用,重构或交接时一目了然



















