用tree /f > structure.txt导出结构,再用php脚本解析创建文件:过滤树形符号,递归建目录,仅对含扩展名且非结尾斜杠的路径创建空文件。

直接用 tree 命令生成结构再让 PhpStorm 自动识别文件,比在 IDE 里手动右键新建几十个空文件快得多,也更可靠。
Windows 下用 tree /f > structure.txt 快速导出目录结构
这是最轻量、不依赖任何 PHP 环境的起点。进项目根目录后执行:
tree /f > structure.txt
会生成带完整路径和文件名的树状文本,例如:
├── app/
│ ├── Http/
│ │ └── Controllers/
│ │ └── UserController.php
│ └── Models/
│ └── User.php
└── config/
└── app.php
注意点:
-
/f参数必须加,否则只显示目录,不列文件 - 输出文件名可自定义(如
structure.txt),但别用中文或空格,避免后续脚本解析失败 - 如果项目含大量 node_modules 或 vendor,建议先
cd到你真正要建结构的子目录(如src)再运行,不然文本太长且无用
用 PHP 脚本批量创建空文件,路径来自 structure.txt
有了结构文本,下一步是把它转成真实文件。别手敲 mkdir 和 touch,写个简单 PHP 脚本解析并创建:
$lines = file('structure.txt', FILE_IGNORE_NEW_LINES);
$base = __DIR__; // 当前脚本所在目录,即项目根
foreach ($lines as $line) {
// 过滤掉 tree 的 ASCII 树形符号和空行
$path = trim(preg_replace('/^[├─└│s]+/', '', $line));
if (!$path || strpos($path, ':\') === 0 || strpos($path, '---') === 0) {
continue;
}
// 区分目录和文件:含 . 且不是纯目录名(如 "config/")才当文件
if (pathinfo($path, PATHINFO_EXTENSION) && substr($path, -1) !== '/') {
$full = $base . '/' . $path;
$dir = dirname($full);
if (!is_dir($dir)) {
mkdir($dir, 0755, true); // 关键:第三个参数 true 启用递归
}
if (!file_exists($full)) {
file_put_contents($full, "<?php
// Auto-generated placeholder
");
}
}
}关键细节:
- 用
mkdir($dir, 0755, true)创建父级目录,true缺一不可,否则app/Http/Controllers这种多层路径会失败 - 用
file_put_contents()而不是fopen(..., 'w'),更简洁;内容写<?php是为了确保 PhpStorm 识别为 PHP 文件,触发语法高亮和索引 - 正则
/^[├─└│s]+/清洗tree输出的前缀符号,不同终端可能略有差异,可按需微调
PhpStorm 不会自动加载新文件?刷新 + 标记 Sources Root 是必须动作
脚本跑完,文件确实建好了,但在 PhpStorm 里可能看不到,或者显示为灰色、无法跳转——这不是脚本问题,是 IDE 缓存和目录类型没同步。
必须做两件事:
- 右键项目根目录 → Reload project(或按
Ctrl+Shift+O),强制重新扫描文件系统 - 确认
src或你实际放代码的目录已标记为 Sources Root(右键 → Mark Directory as → Sources Root)。标错位置(比如标了public)会导致新建的UserController.php在 Ctrl+B 时提示 “Not found”
验证是否生效:打开任意 PHP 文件,输入 new AppHttpControllersUserController,悬停看是否显示声明路径;不显示,说明 Sources Root 没标对或没刷新。
想跳过脚本,直接在终端里用 mkdir -p + touch?Linux/macOS 可行,Windows 需改写
如果你习惯命令行且环境是 Linux/macOS,可以直接用 shell 批量建:
mkdir -p app/Http/Controllers app/Models config && touch app/Http/Controllers/UserController.php app/Models/User.php config/app.php
但 Windows 的 cmd 不支持 mkdir -p,PowerShell 倒是支持 New-Item -ItemType Directory,不过跨平台一致性差。所以更推荐统一用 PHP 脚本:一次写好,Windows/macOS/Linux 全能跑,还能加日志、跳过已存在文件、写默认文件头。
真正容易被忽略的是:**Sources Root 标记必须在文件生成后手动确认,IDE 从不自动推断“哪些目录该参与索引”**。哪怕你用脚本建了一百个文件,标错一个根目录,整个命名空间补全就失效。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










