当程序调用当前类中未声明或者没有权限调用的方法时,系统会自动调用该方法
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);
}
}
将方法封装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)
}
// 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方法内写出提示报错信息。报错信息亦可分解拆开,将状态码,数据重新命名写入配置文件,即可重复调用。大大提高了系统的可维护性。