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);
    }
相关推荐
4***V2028 小时前
PHP在微服务通信中的消息队列
开发语言·微服务·php
亿坊电商8 小时前
PHP框架 vs 原生开发:移动应用后端开发实战对比!
开发语言·php
n***293211 小时前
PHP安全编程实践
开发语言·安全·php
b***748811 小时前
PHP在电子商务系统中的构建
开发语言·php
BingoGo12 小时前
PHP8.6 新的 RFC 提案 Context Managers 优雅管理资源生命周期
后端·php
JaguarJack12 小时前
PHP8.6 新的 RFC 提案 Context Managers 优雅管理资源生命周期
php·服务端
月下的郁王子13 小时前
进阶学习 PHP 中的二进制和位运算
android·学习·php
饭九钦vlog17 小时前
修复重装机kali机器上不了网络域名问题一键脚本
服务器·网络·php
未来之窗软件服务18 小时前
幽冥大陆(二十九)监控平台协议常见地址——东方仙盟练气期
开发语言·php·东方仙盟·东方仙盟sdk·监控协议
拾忆,想起19 小时前
Dubbo网络延迟全链路排查指南:从微服务“快递”到光速传输
网络·网络协议·微服务·架构·php·dubbo