在 PhpStorm 文件模板中插入静态版权声明需修改 Settings → Editor → File and Code Templates → Includes → File Header,并在对应语言模板(如 PHP Class)开头添加 #if (${HEADER_COMMENT} != "")${HEADER_COMMENT}#end 才生效。

在 PhpStorm 文件模板里插入静态版权声明
直接在文件模板编辑器里写死版权声明最简单,但要注意编码和换行符一致性。PhpStorm 的模板语法不支持动态日期或作者变量(除非用 Live Template 配合插件),所以纯模板场景下只能写固定文本。
操作路径:Settings → Editor → File and Code Templates → Includes → File Header。这里改的是所有新文件共用的 File Header 模板,不是单个语言的模板。
- 模板内容建议用 UTF-8 编码,避免中文乱码;可在顶部加
# coding: utf-8(对 Python 有效)或确保 IDE 全局编码设为 UTF-8 - 每行注释符号需匹配目标语言:PHP 用
/* */或//,JavaScript 用/** */,Python 用# - 不要在模板里写
$DATE$这类变量——它只在「Live Templates」中生效,在「File Templates」里会被原样输出为字符串
让 PHP 类文件自动带版权块的正确配置
PHP 文件模板(如 PHP Class)默认不继承 File Header,必须手动引用。否则新建 class 文件时版权信息不会出现。
打开 Settings → Editor → File and Code Templates → Files → PHP Class,在模板开头添加:
立即学习“PHP免费学习笔记(深入)”;
#if (${HEADER_COMMENT} != "")${HEADER_COMMENT}#end
这行是关键:它会读取并插入 Includes → File Header 中定义的内容。如果没加这句,哪怕你改了 File Header,PHP 类文件也完全看不到版权块。
-
${HEADER_COMMENT}是 PhpStorm 内置变量,仅在文件模板中可用,不是用户自定义变量 - 若想对不同模块用不同声明(如开源 vs 内部项目),可复制一份
File Header模板,再在对应语言模板里用#include "My Custom Header"显式引入 - 注意缩进:PHP 模板里如果版权块顶格写,生成的 class 文件也会顶格,可能破坏 PSR-12 规范,建议在
File Header模板里统一加 4 空格前缀(针对class类型)
为什么改了模板但新建文件没生效?
常见原因不是缓存,而是模板作用域没选对。PhpStorm 的模板分三层:全局(All Languages)、语言专属(如 PHP)、文件类型(如 PHP Class)。你改了 File Header,但新建的是 PHP Script 模板,而它没引用 ${HEADER_COMMENT}。
- 检查当前新建文件时右键菜单点的是哪个模板:比如选 “New → PHP File” 调用的是
PHP Script,不是PHP Class - 确认该模板内容第一行是否包含
#if (${HEADER_COMMENT} != "")${HEADER_COMMENT}#end;没有就补上 - 如果用的是 Laravel 或 Symfony 插件,它们可能覆盖了默认模板,此时要到插件设置里找对应模板位置,或禁用插件模板回退到原生逻辑
- 新建文件后版权块显示为
${HEADER_COMMENT}字符串本身?说明模板引擎没解析——大概率是用了错误的变量名,比如写成$HEADER_COMMENT$(多写了 $)或HEADER_COMMENT(缺 $)
想自动填入作者名和日期怎么办
文件模板层面做不到真自动,但可以用 Live Template 补位。比如定义一个缩写 copy,展开后插入带当前日期和用户名的块:
/**
* Copyright (c) ${YEAR} ${USER}
* @author ${USER}
* @date ${DATE}
*/
然后在写完文件头后手动触发 copy。虽然不如文件模板全自动,但比每次手敲快,且 ${USER} 和 ${DATE} 在 Live Template 中是真实可解析的。
-
${USER}取自系统用户名,不能设为 Git 配置里的 author.name;如需一致,得在系统级改用户名或用插件同步 - Live Template 默认只在当前文件类型生效,需在「Applicable in」里勾选 PHP / JavaScript / Plain Text 等范围
- 别试图在文件模板里用
#parse("Copyright.tpl")引入外部文件——PhpStorm 不支持这种语法,会报错或静默失败
真正麻烦的不是加文字,而是让不同团队成员的 IDE 行为一致。模板导出、版本化、CI 检查缺失版权声明——这些才是落地时卡住的地方。


















