您好我创建了框架PHP,但是当我使用魔术方法__call
时,我遇到了问题。我使用call_usr_func_array
这样调用我的控制器。
$slice = [];
if(count($segment)>2){
$slice = array_slice($segment,2);
}
try{
call_user_func_array([$controller,$m],$slice);
} catch(\ArgumentCountError $e){
throw new \ArgumentCountError("Segment tidak sesuai dengan controller");
}
我的控制员。
namespace Http\Controllers;
class ApiController{
public function index(){
echo json_encode(['status'=>200,'message'=>"Welcome to API Page"]);
}
public function __call($m,$p){
dd($m);
}
}
我收到此错误。如何解决这个错误。谢谢。
[错误结果] [1]
答案 0 :(得分:0)
$ controller需要是类的实例,而不是字符串,但是在截图中,似乎你将$ controller分配给一个带有类名的字符串,然后你创建了该类的实例......但是不要将实例保存在任何地方。我想你的意思是写$controller = new $controller;
,这会使$ controller成为一个对象,这会使你的call_user_func_array调用工作。