tp8 设置空控制器和空方法

1、空控制器

单应用模式下,我们可以给项目定义一个Error控制器类

复制代码
<?php

namespace app\controller;

class Error
{
   /**
     * 空控制器中重写魔术方法__call可以实现自定义错误提示,在这里可以提示找不到控制器
     * 注意:在基础控制器BaseController中,如果找不到方法调用,会自动调用__call方法,可以提示方法不存在
     * @param $method
     * @param $args
     * @return Json
     */
    public function __call($method, $args)
    {
        //获取当前控制器
        $controller = request()->controller();
        return json([
            'code' => 0,
            'msg' => "当前{$controller}控制器不存在",
        ]);
    }
}

注意:如果是多应用模式,就写在模块的控制器里面,我试了也可以,官方文档这里没说多模式的

2、空方法

(1)当前类继承自BaseController

加到BaseController里

(2)当前类继承自某个公共的类

加到公共类里

(3)当前类没有继承自任何类

加到该控制器类里

复制代码
 /**
     * 重写魔术方法__call()
     * @param String $method  接收不存在的方法名
     * @param array $arguments 接收不存在的方法参数
     * @return Json
     */
    public function __call(string $method, array $arguments){
        // 处理未定义或不可访问的方法调用
        // 这里可以根据实际需求编写逻辑
        // 例如,可以返回一个JSON响应或抛出异常
        $result = [
            'code' => 0,
            'msg' =>"方法{$method}()不存在或不可访问",
        ];
        //逻辑:如果我们的模块是api模块,需要输出api的数据格式
        return json($result, 400);
    }
相关推荐
xinhuanjieyi3 小时前
Deprecated: Directive ‘track_errors‘ is deprecated in Unknown on line 0
php
棒棒的唐5 小时前
Composer国内镜像配置全指南:加速依赖下载
php·composer
神净讨魔7655 小时前
【php】老旧PHP项目(PHP 5.6)本地环境搭建与踩坑记录
php
在角落发呆6 小时前
DTU 数据转发服务器:工业物联网的隐形桥梁
开发语言·php
古城小栈8 小时前
宝塔面板部署 ThinkPHP6 后端
php
幽络源小助理11 小时前
MacCMSPro版视频影视系统源码_全开源高可用视频平台解决方案
前端·php·php源码
TO_WebNow1 天前
使用thinkPHP8.x 访问接口提示跨域
前端·php
JSON_L1 天前
PHP使用Intervention Image图像处理
图像处理·php·intervention
treesforest1 天前
IP数据库下载完全指南:免费与商业IP定位库对比
网络·数据库·php
原来是猿1 天前
网络计算器:理解序列化与反序列化(下)
linux·开发语言·网络·网络协议·json·php