此方式参考 to5.1 开发的 海豚php 一个应用模块包含 admin home api 等多种方式,多一个方式就多一个入口文件。
思路是把入口文件的名称与控制器层(controller_layer)目录对应,然后将pathinfo的第一个路径作为应用的名称。相当于是把两个错位后达到的效果!
第一步:修改 MultiApp.php 189行setApp方法(必须先装多应用组件)
//将多应用名称设置为控制器层!$this->app->config->set([ 'controller_layer' => $this->getScriptName()=='index'?'controller':''], 'route');//拆分并patinfo,将应用名称去除并重组$pathinfo_array = explode('/', \request()->pathinfo());$appName = $pathinfo_array[0];unset($pathinfo_array[0]);\request()->setPathinfo(join('/',$pathinfo_array)) ;//pathinfo中拆出应用名称并替换原来的应用名称$this->appName = $appName;
第二步:在public 目录创建入口文件,并设置入口文件名称;
namespace think;require __DIR__ . '/../vendor/autoload.php';// 执行HTTP应用并响应$http = (new App())->http;$response = $http->name('api')->run();$response->send();$http->end($response);
访问 解释:
访问 http://serverName/index.php/index/index/index 指向的是 index应用下面controller的index控制器index方法访问 http://serverName/admin.php/index/index/index 指向的是 index应用下面admin的index控制器index方法访问 http://serverName/api.php/index/index/index 指向的是 index应用下面api的index控制器index方法