thinkphp模板注释仅支持{// 单行}和{/ 多行 /}两种语法,用于提升可维护性与协作效率,须说明“为什么”而非“是什么”,禁止含敏感信息或调试残留,且需与assign变量语义一致。

ThinkPHP 模板注释本身不参与逻辑执行,也不被框架解析为运行时行为,但它直接影响可维护性、协作效率和安全意识。代码审查中关注模板注释,不是为了检查“语法对不对”,而是看它是否真实服务于开发流程——比如避免误删关键结构、提示变量来源、标注待优化区块。
只用官方支持的模板注释语法
ThinkPHP 模板引擎识别且仅保留两种注释形式:
- {// 单行模板注释}:写在模板任意位置,编译后完全忽略,不输出也不执行
- {/* 多行模板注释 */}:跨行包裹内容,同样被模板引擎静默跳过
⚠️ 注意:<?php ?>、//、/* */(PHP 层注释)在模板文件里无效——它们要么被过滤,要么触发解析错误。审查时发现这类写法,应直接标记为规范错误。
注释要说明“为什么”,而不是“是什么”
模板里写{// 用户头像}没有价值;而{// 该字段来自 $user->avatar_url,非空时才渲染 img 标签}能帮后续开发者快速理解上下文。
推荐在以下场景加注释:
- 条件渲染区块的业务依据(如
{// 仅 VIP 用户可见,权限由 Auth::check('vip') 控制}) - 临时屏蔽但计划恢复的代码段(注明截止时间或关联 issue 编号)
- 调用非常规函数或全局变量的位置(如
{// $think_config['site_name'] 来自 config/app.php,勿硬编码})
禁止在注释里藏敏感信息或调试残留
模板注释会随 HTML 一并输出到浏览器源码(如果未开启模板压缩或调试模式),所以:
- 不能出现数据库连接参数、密钥片段、内部 API 地址等
- 删除所有形如
{// TODO: 这里要加 XSS 过滤,先上线}这类未闭环的备注 - 上线前扫描模板目录,确保没有
{// debug: var_dump($data)}类残留
自动化审查工具可在构建阶段 grep 模板文件中的{//.*debug\|TODO\|FIXME\|password\|key等关键词。
配合模板标签与 assign 做语义化说明
比起解释“这段代码干嘛”,更高效的是让注释和模板结构形成映射。例如:
{assign name="user_info" value="$user->toArray()"/}
{// $user_info 包含 id/name/avatar/status,status=1 表示已认证}
{if $user_info.status eq 1}
<span class="badge">认证用户</span>
{/if}
这种写法把数据契约显性化,比在 if 块里写注释更可靠。审查时重点确认:assign 变量名是否与注释描述一致、作用域是否清晰、是否重复 assign 同名变量。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











