创建公共模块需在根目录下建立common目录并配置PSR-4自动加载,通过命名空间在多应用间共享模型、服务与中间件,实现代码复用。
在 ThinkPHP 多应用模式下,公共模块的创建主要是为了解决多个应用之间共享模型、服务、工具类或配置的问题。通过合理组织目录结构和自动加载机制,可以实现代码复用,避免重复开发。
1. 创建公共模块目录
在项目根目录下创建一个 common 或 modules 目录,用于存放所有应用共享的代码。
示例结构:
project/ ├── app/ │ ├── home/ # 前台应用 │ ├── admin/ # 后台应用 │ └── common/ # 公共模块(可选命名) ├── common/ # 独立的公共模块目录(推荐) │ ├── service/ │ ├── model/ │ ├── util/ │ └── trait/ ├── config/ └── route.php
注意:这里的 common 是独立于各个应用的顶层目录,不属于任何一个具体应用。
2. 配置自动加载
Composer 支持 PSR-4 自动加载,需在 composer.json 中注册公共模块的命名空间。
立即学习“PHP免费学习笔记(深入)”;
修改 composer.json:
"autoload": { "psr-4": { "app": "app/", "common": "common/" } }
保存后运行命令更新自动加载:
composer dump-autoload
之后就可以在任何应用中使用 commonserviceUserService 这样的命名空间引用公共类。
3. 在应用中调用公共模块
例如,在 home 应用的控制器中使用公共模型或服务:
namespace apphomecontroller; <p>use commonmodelUser; use commonserviceUserService; use thinkController;</p><p>class UserController extends Controller { public function info($id) { $user = User::find($id); $data = UserService::formatUserInfo($user); return json($data); } }</p>
只要命名空间正确,ThinkPHP 会自动加载公共模块中的类。
4. 公共配置与中间件
如果需要共享配置文件,可在 config/ 目录下定义公共配置项,如 api.php 或 services.php,然后在各应用中通过 config(‘api.key’) 调用。
公共中间件也可放在 common/middleware/,并在各应用路由中引用:
// 在 app/home/route.php 中 use commonmiddlewareAuthMiddleware; <p>Route::rule('user/info', 'UserController/info')->middleware(AuthMiddleware::class);</p>
基本上就这些。关键是目录规划清晰,配合 Composer 自动加载,就能让多个应用高效共享代码。不复杂但容易忽略命名空间和加载配置。
以上就是thinkphp php js json composer app 工具 ai 路由 配置文件 代码复用 php composer 中间件 json thinkphp 命名空间