MixPHP 从 V2.1 起调整为单应用 (可配置多个模块),`app/src` 目录内为同一个应用,由注册的命令引导启动不同目录的程序代码,同一个应用中依然包含以下程序模块: - Console:命令行开发、守护进程开发 - Http:Http服务开发 - WebSocket:WebSocket服务开发 - Tcp:TCP服务开发 - Udp:UDP服务开发 目录结构: ``` |-- LICENSE |-- README.md |-- app | |-- Common | |-- Console | |-- Http | |-- JsonRpc | |-- SyncInvoke | |-- Tcp | |-- Udp | |-- WebSocket | `-- functions.php |-- beans |-- bin | `-- mix.php |-- composer.json |-- config |-- manifest.php |-- public |-- runtime |-- vendor `-- views ``` ## 增加或修改功能模块 `app` 目录内的应用都可随意修改或增加,以 `HTTP` 服务开发为例: >[success] 通常一个 HTTP 应用对应一个子域名,如:api.test.com 对应 app/src/Api 。 ### 1. 建立应用目录 在 `app` 目录内建一个子目录,比如:`Api`,然后将 `Http` 文件夹的全部文件复制过来。 ### 2. 修改类文件的命名空间 找到所有类文件,全部由 `App\Http` 修改为新的命名空间 `App\Api`。 ### 3. 命令注册到 (manifest.php) 把新模块的服务启动命令注册到 `commands` 配置项中: ~~~ /** API */ 'api:start' => [ \App\Api\Commands\StartCommand::class, 'description' => "Start service", 'options' => [ [['d', 'daemon'], 'description' => "Run in the background"], [['p', 'port'], 'description' => "Listen to the specified port"], ], ], ~~~ ### 4. 启动 指定配置启动服务: ``` $> php bin/mix.php api:start ```