0

有一段代码:

if(DataEndpoint::isAjaxRequest()) {
    if(isset($_POST['controller']) && !empty($_POST['controller']) && isset($_POST['action']) && !empty($_POST['action'])) {
        $controllerName = $_POST['controller'];
        $actionName = $_POST['action'];

        if(class_exists($controllerName.'Controller')) {
            $controller = new $controllerName.'Controller';

            if(method_exists($controller, $actionName)) {
                // if id's been passed
                // if method signature accepts the parameter
                // invoke... ?
            }
        }
    }
} // if(DataEndpoint::isAjaxRequest()) {

我可以检查给定是否action存在,但不知道to pass/invoke the action withid 之类的附加参数如何(我们建议它是一个字符串,它是可选的)。我该如何解决这个问题?

4

1 回答 1

1

使用反射类和反射方法。看这里:

$action_ref = new ReflectionMethod($controller, $action);
$action_required_params = $action_ref->getParameters();
$parameters = array(/*...*/);
$action_ref->invokeArgs($controller, $parameters);
于 2013-06-05T08:51:04.337 回答