1.在thinkphp6多应用需要使用composer安装。
composer require topthink/think-multi-app
2.移除原单应用下控制器目录丶模型目录。
app/controller
app/model
3.新建应用admin由于使用php think 命令有缺陷,使用手动建设。
Thinkphp6
├─app
│ └─admin
│ ├─controller 控制器目录
│ │ ├─Error.php 自定义未找到控制器错误__call()
│ │ ├─Inde.php 控制器
│ │ └─.......
│ ├─exception
│ │ ├─Exception.php 其他异常处理
│ │ └─.......
│ ├─route 路由目录
│ │ ├─route.php 路由存放
│ │ └─.......
│ ├─middleware 中间件目录
│ ├─middleware.php 中间件配置
│ └─provider.php 服务提供定义文件
每个应用都拥有独立的路由丶中间件丶异常处理。
其他异常处理:
app/admin/exception/Exception.php
<?php
/**
* End file exception.php
*/
namespace app\admin\exception;
use think\exception\Handle;
use think\Response;
use Throwable;
class Exception extends Handle
{
public $HttpStatus = 500;
public function render($request, Throwable $e): Response
{
//支持错误自定义浏览器状态参数,所以这里要判断时候用户自定义了浏览器参数
if (method_exists($e, "getStatusCode")) {
$httpStatus = $e->getStatusCode();
} else {
$httpStatus = $this->HttpStatus;
}
return show(config("status.error"), $e->getMessage(), null, $httpStatus);
}
}
注册异常处理:
app/api/provider.php
<?php
// 容器Provider定义文件
return [
'think\exception\Handle' => \app\api\exception\Exception::class,
];
4.多应用下建议开启强制路由,在config/route.php中开起强制路由以及路由完全匹配。
<?php
// +----------------------------------------------------------------------
// | 路由设置
// +----------------------------------------------------------------------
return [
// 是否强制使用路由
'url_route_must' => true,
// 路由是否完全匹配
'route_complete_match' => true,
];
路由设置,只需要门面模式use路由即可使用
app/api/route/route.php