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

最后修改:2022 年 05 月 10 日
如果觉得我的文章对你有用,请随意赞赏