tp6杜绝无效请求

  • 在config/app.php文件里可以修改开发者模式等(true/false)

魔术方法call

方法不存在时

当程序调用当前类中未声明或者没有权限调用的方法时,系统会自动调用该方法

public function __call($name,$arguments){
	$result = [
	'status'=>0,
	'message'=>"找不到该方法",
	'result'=>null,
	];
	return json($result, code:400);
}

当控制器不存在时

须在controller文件夹下创建一个Error.php文件,仅需把上面的方法复制到该文件夹下即可


namespace app/controller;
class Error{
public function __call($name,$arguments){
	$result = [
	'status'=>0,
	'message'=>"找不到该控制器",
	'result'=>null,
	];
	return json($result, code:400);
}
}

通用化API数据-格式数据

将方法封装controller/commen文件内,然后直接在basecontroller内部调用即可

//commen.php
// 应用公共文件
function show($status, $message = "error", $data = [], $httpStatus = 200)
{
    $result = [
        "status" => $status,
        "message" => $message,
        "result" => $data,
    ];
    return json($result, $httpStatus);
}
//basecontroller
function __call($name,$arguments){
retutn show(0,"找不到该方法",2,404)
}

通用化API数据-格式数据(优化)

  • 将状态码,message等数据格式化
// config/status.php

/*该文件主要存放业务状态码相关的配置*/
return [
    "success" => 1,
    "error" => 0,
    "not_login" => -1,
    "user_is_register" => -2,
    "action_not_found" => -3,
];
//basecontroller.php
    public function __call($name, $arguments)
    {
 		return show(config("status.action_not_found"),"找不到该方法",2,404);
    }

get:当在url输入未存在的方法时,系统会自动调用call魔术方法,并自动运行。我们需在call方法内写出提示报错信息。报错信息亦可分解拆开,将状态码,数据重新命名写入配置文件,即可重复调用。大大提高了系统的可维护性。

你可能感兴趣的:(PHP)