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);
    }
相关推荐
小徐不徐说3 小时前
序列化与反序列化:把 C++ 对象可靠地保存下来
开发语言·数据库·c++·php
代龙涛11 小时前
WordPress Query 查询机制详解(WP_Query)
开发语言·后端·php·wordpress
达达表哥16 小时前
VIC博客全新版本 底层优化 包含新主题新插件
php·腾讯云·开源软件
vipxieliang17 小时前
PHP 性能优化实战:一次线上内存泄漏与连接数打满的排查复盘
php
vipxieliang17 小时前
使用 PHP 构建命令行工具:从 $argv 到 Symfony Console 与 Cron 集成
php
vipxieliang17 小时前
ThinkPHP 8.0 路由完全重写:新写法与迁移适配指南
php·thinkphp
AlanAshley18 小时前
无 SIM 卡也能打 110?手机紧急呼叫能力的软硬件技术探究
开发语言·智能手机·php
Escalating_xu1 天前
【Linux 网络编程】DNS 与 ICMP:从域名解析到 ping、traceroute,把“网络通不通”问清楚
linux·网络·php
niucloud-admin1 天前
NIUCLOUD PHP SAAS上门家政使用文档--服务订单:订单列表
开发语言·php
一枕槐安4871 天前
大模型限流、重试、超时处理:API 调用健壮性方案
linux·服务器·php·大模型api·指数退避·限流控制·超时预算