此方式参考 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方法