phpstorm 的 scratch file 默认为 plain text,无 php 补全和类型提示;创建时须手动选 php 语言,或已建文件通过右下角状态栏切换为 php,否则无法解析 datetime 等符号。

PhpStorm 的 Scratch File 不是“临时保存的 PHP 文件”,而是完全脱离项目上下文、不走 autoloader、不读 php.ini、也不继承 Xdebug 配置的纯 IDE 内存级草稿区——想让它像项目里那样补全、跳转、类型提示,必须手动“伪造”一个合法 PHP 上下文。
创建时语言选错就废了
默认新建的 Scratch File 语言是 Plain Text,此时连 echo 都没高亮,array_ 按 Tab 更不会出补全。必须在创建弹窗里手动选 PHP;如果已经建好,右下角状态栏点当前语言名 → 改为 PHP。
- 选错语言后,
Cannot resolve symbol 'DateTime'这类报错不是代码问题,是 IDE 根本没启用 PHP 解析器 - 用
Ctrl+Alt+Shift+Insert快捷键创建时,弹窗里没注意下拉框,默认就是Plain Text - 哪怕只写一行
<?php echo 1;,语言不对,补全、错误检查、括号匹配全失效
补全和类型提示要靠“骗”
仅设为 PHP 语言还不够。PhpStorm 只有在识别到 class 或 namespace 结构时,才会启动完整语义分析流程。所以得加两行“咒语”:
namespace Scratch;
class _ {}
之后你写 $arr = [1,2]; array_,array_filter 才会出来。否则函数调用、变量推导、new DateTime() 的方法提示全挂掉。
- 写
function test() {}开头没用——全局函数体外的调用不被索引 - 不能用
use App\Services\Logger;,use在 Scratch 里直接被忽略,要用就得全限定名:new \App\Services\Logger() - Composer 包里的类、自定义函数、
config/下的配置,统统不可见
运行代码不能点绿色三角
PhpStorm 没有给 Scratch File 提供原生“Run”按钮。所谓运行,本质是借道其他机制:
- 最稳:复制全部内容 → 粘贴进已配置好的
PHP Console(Tools > PHP > PHP Console),它能加载 autoload、.env、Xdebug - 最快:按
Ctrl+S保存为临时.php文件(比如桌面建个tmp.php),右键 →Run 'tmp.php',但记得删,别留在项目里污染 Git - 别试:直接右键
Run Scratch File—— 这个菜单项根本不存在,是常见幻觉
别把 Scratch 当项目文件用
它关掉就丢(实际存于系统缓存目录,但不建议依赖),且和项目完全隔离。你在 scratch.php 里写了个 function my_helper(),然后在项目里直接调用——必然报 Call to undefined function。
- Scratch 文件不会被
composer dump-autoload扫描,PSR-4 规则对它无效 - 它适合验算
json_encode(NAN)返回什么、测正则/[a-z]+/i能否匹配中文、快速 dump 数组结构 - 一旦代码超过 20 行、或需要引用项目类/配置,立刻保存为真实
.php文件,别硬撑
真正容易被忽略的是:Scratch 的“临时性”不是功能缺陷,而是设计前提——它不模拟项目环境,只提供语法层支持。想跑真实逻辑,就得主动切回项目上下文,没有取巧路径。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











