47 lines
1.8 KiB
PHP
Raw Permalink Normal View History

2025-02-27 09:55:33 +08:00
<?php
// +----------------------------------------------------------------------
// | likeadmin快速开发前后端分离管理后台PHP版
// +----------------------------------------------------------------------
// | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
// | 开源版本可自由商用可去除界面版权logo
// | gitee下载https://gitee.com/likeshop_gitee/likeadmin
// | github下载https://github.com/likeshop-github/likeadmin
// | 访问官网https://www.likeadmin.cn
// | likeadmin团队 版权所有 拥有最终解释权
// +----------------------------------------------------------------------
// | author: likeadminTeam
// +----------------------------------------------------------------------
declare (strict_types=1);
2025-02-27 17:52:22 +08:00
namespace app\oa\http\middleware;
2025-02-27 09:55:33 +08:00
use app\common\exception\ControllerExtendException;
2025-02-27 17:52:22 +08:00
use app\oa\controller\BaseAdminController;
2025-02-27 09:55:33 +08:00
use think\exception\ClassNotFoundException;
use app\common\exception\HttpException;
use Webman\Http\Request;
use Webman\Http\Response;
use Webman\MiddlewareInterface;
class InitMiddleware implements MiddlewareInterface
{
public function process(Request $request, callable $handler): Response
{
//获取控制器
try {
$controller = str_replace('.', '\\', $request->controller);
$controllerClass = new $controller;
2025-02-27 17:52:22 +08:00
if (($controllerClass instanceof BaseAdminController) === false) {
2025-02-27 09:55:33 +08:00
throw new ControllerExtendException($controller, '404');
}
} catch (ClassNotFoundException $e) {
throw new HttpException(404, 'controller not exists:' . $e->getClass());
}
//创建控制器对象
$request->controllerObject = new $controller;
return $handler($request);
}
}