php文件模板需在“Editor → File and Code Templates → Files”中修改PHP class/Interface/Trait项,而非PHP File;其变量如${NAME}、${Namespace}须严格按Velocity语法书写,错误将导致静默失效。

PHP文件模板在哪改
phpstorm 的 PHP 文件模板不是在“编辑器 → 文件和代码模板”里随便选个 PHP 就能直接改的——默认的 PHP File 模板只影响通过 右键 → New → PHP File 创建的空文件,不参与 class、interface、trait 等结构化文件生成。真要统一控制新类/接口的骨架,得去改对应的语言结构模板。
修改 class/interface/trait 模板内容
进入 Settings / Preferences → Editor → File and Code Templates → Files,找到以下几项:
-
PHP Class:控制New → PHP Class生成的内容(含命名空间、class声明、括号换行等) -
PHP Interface:同理,影响接口定义格式 -
PHP Trait:决定 trait 文件初始结构
这些模板支持内置变量,比如 ${NAME}(文件名)、${NAMESPACE}(当前目录对应的命名空间)、${date}。别手动删 namespace 行——如果项目用 PSR-4 自动加载,没声明命名空间会导致自动补全失效或 Class not found 错误。
#if (${NAMESPACE} != "")namespace ${NAMESPACE};#end if (${NAMESPACE} != "")#set( $NAMESPACE_BLOCK = "${NAMESPACE}")#else#set( $NAMESPACE_BLOCK = "")#end
class ${NAME} { }
为什么改了模板但新建文件没生效
常见原因有三个:
立即学习“PHP免费学习笔记(深入)”;
- 新建的是普通
.php文件(走的是PHP File模板),不是通过New → PHP Class创建的——后者才读PHP Class模板 - 模板里用了错误的变量名,比如写成
$NAME(少一个{}),PhpStorm 会静默忽略,渲染成空白或字面量 - 项目启用了
PHP Language Level低于 7.0,某些模板语法(如declare(strict_types=1))会被自动过滤掉
验证方式:在模板里临时加一行 // debug: ${NAME},新建类看是否出现——没出现就说明模板根本没被调用。
自定义模板加常用代码片段
想让每个新 class 都自动带 __construct 或 DocBlock?直接往 PHP Class 模板里加:
class ${NAME} { /** * @var */ private $${NAME?lower}; public function __construct() { }
}
注意:$${NAME?lower} 中的反斜杠是转义,否则 $name 会被当作模板变量解析失败;${NAME?lower} 是 Velocity 模板语法,表示小写转换。如果项目强制要求 strict_types,建议在 PHP Class 模板顶部加 declare(strict_types=1);,但需确认全局 PHP 版本支持。
模板变量不会自动补全,拼错就白改。最稳妥的方式是复制已有模板内容,再局部调整——别从零手敲。