call_usr_func_array无法获得魔法__call

时间:2018-04-20 07:23:12

标签: php

您好我创建了框架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]

1 个答案:

答案 0 :(得分:0)

$ controller需要是类的实例,而不是字符串,但是在截图中,似乎你将$ controller分配给一个带有类名的字符串,然后你创建了该类的实例......但是不要将实例保存在任何地方。我想你的意思是写$controller = new $controller;,这会使$ controller成为一个对象,这会使你的call_user_func_array调用工作。