PhpStorm代码片段变量分Live Template动态变量和File Template只读预定义变量两类:前者需在Edit variables中配置表达式(如className()),后者仅支持$NAME$等固定大写变量,混用或命名错误均导致原样输出。

PhpStorm 的代码片段变量分两类:Live Template 里可自定义的动态变量(如 className()),和 File Template 里只读的预定义变量(如 $NAME$)——混用或写错名字,变量就原样输出,不替换。
Live Template 变量必须走 Edit variables 配置
模板文本里写 $VAR$ 不等于变量就生效。它只是个占位符,值从 Edit variables 表格里来:
-
$END$和$SELECTION$是唯二无需配置的内置变量;其他所有自定义变量(哪怕叫$USER$)都得手动添加进变量表 - 变量名大小写敏感:
$model$≠$MODEL$,后者才可能被识别为类名表达式 - Expression 栏必须填合法函数,比如
className()、suggestVariableName()、date("Y-m-d");填错(如class_name())会导致该变量留空 - 勾选
Skip if defined才能跳过已计算出默认值的变量;否则每次展开都要手动删一遍
File Template 只认固定大写变量名
新建文件时用的模板(比如右键 → New → PHP Class)不支持任何自定义逻辑,只吃 IDE 内置的几个硬编码变量:
- 必须用
$NAME$(全大写+美元符),${NAME}、$name$、$FILE_NAME$全部原样输出 -
$NAME_CAMEL$生成userController,不是UserController;想首字母大写得靠$NAME$+ 手动调整 -
$DATE$固定格式YYYY/MM/DD,没法改成Y-m-d;强行改会失效 -
$NAMESPACE$是无效变量,别试;命名空间只能硬编码,比如namespace App\Models;
常见失效现象与对应检查点
变量没替换?大概率卡在这几个环节:
立即学习“PHP免费学习笔记(深入)”;
- Live Template 没点
Define勾选上下文(比如只勾了PHP,但你在.blade.php里用——得额外勾Blade Template) - 缩写输错了大小写:
logd设的,结果敲了LogD,完全不触发 - 模板里多个
$END$,或$END$不在最后一个变量位置——光标跳转顺序就乱,甚至卡住 - File Template 中
$NAME$为空:说明新建时没手动输入文件名(比如用 Cmd+N → PHP Class → 直接回车),得重来一次并明确填名称
变量本身没有“智能推导”能力,它只是把 IDE 当前能拿到的上下文值照搬进来。想让 $MODEL$ 自动变成 User,就得在变量表里给它配 className();想让 $NAME$ 在 Models 目录下自动加 App\Models\ 前缀?做不到——那是 File Template 的硬边界。


















