跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

ThinkPHP命令行_使用Think命令创建模块【说明】

ThinkPHP 5.1+ 已废弃 make:module 命令,因其转向多应用模式;应使用 php think build --module xxx(需先配置 build.php)或手动创建应用目录并启用 'app_multi' => true。 ThinkPHP 的
think
命令本身不支持直接创建模块(Module)——这是 ThinkPHP 5.1+ 版本中被移除的功能,强行执行会报错或静默失败。 为什么
think make:module
找不到命令? ThinkPHP 5.1 起全面转向「多应用模式」(
app
目录下是应用,不是传统意义上的模块),官方废弃了
make:module
命令。如果你在文档或旧教程里看到它,大概率对应的是 ThinkPHP 5.0 或更早版本,或者第三方扩展包(如
topthink/think-migration
等不提供该功能)。 运行
php think list
查看所有可用命令,确认没有
make:module
执行
php think make:module User
会提示
Command "make:module" is not defined.
即使手动创建
app/user/
目录,若未配置多应用路由和入口,框架也不会自动识别为独立应用 想实现类似“模块”结构,该怎么做? ThinkPHP 5.1+ 推荐用「多应用」替代传统模块。每个应用相当于一个独立项目,有自己完整的控制器、模型、路由和配置。 用
php think build --module user
可生成基础应用骨架(需先在
build.php
中配置
'user' => ['controller' => 'Index', 'model' => 'User', 'view' => 'index/index']
) 更常用的是直接手动创建:在
app/
下新建目录
user/
,放入
controller/
、
model/
、
config.php
等,并确保
app.php
中开启多应用:
'app_multi' => true
访问时 URL 格式为
/user/index/index
,而非
/index.php?s=user/index/index
(后者是伪模块,已不推荐) 如果坚持用单应用 + 模块化目录结构怎么办? 可以模拟模块组织,但需自行管理命名空间和自动加载,框架不提供原生支持。 PHP 8.5.5 PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。 下载 立即学习 “ PHP免费学习笔记(深入) ”; 在
app/
下建
module/user/
目录,把控制器放
app/module/user/controller/UserController.php
手动注册命名空间:在
composer.json
的
"autoload"
→
"psr-4"
中添加
"app\module\user\": "app/module/user/"
,然后运行
composer dump-autoload
路由需显式绑定:
Route::get('user/profile', 'module\user\controller\UserController@profile');
注意:这种方式绕过框架应用生命周期,中间件、Hook、配置隔离等都得自己补全 真正要区分业务域,优先走多应用;若只是代码分层,用目录+命名空间+路由绑定更可控。别在
think
命令里找不存在的
make:module
—— 它不在那里,也不该在那里。

相关文章