我正在使用自己的路由引擎创建自己的MVC框架。 当我调用页面时,我的网址就是:http://www.domain.com/lang/controller/method/
使用此配置一切正常,但是当我通过POST发送参数时,我希望它们在我的函数声明中。
例如:
函数$_POST => Array ( [login] => myLogin, [pwd] => myPassword)
ConnectUser($login, $password).
我的控制器是一个单身人士。所以,我的函数调用是这样的:\core\controller\UserController::getInstance()->ConnectUser($login, $password).
我用字符串生成我的调用。当我做的时候
$funcCall = $strCall . "::getInstance()->" . $_GET['action'] . "()";
forward_static_call_array($funcCall, $_POST);
我收到此错误:
forward_static_call_array() expects parameter 1 to be a valid callback,
class 'core\controller\UserController' does not have a method 'getInstance()->Connect()'
你对我的问题有所了解吗?
答案 0 :(得分:1)
"core\controller\UserController::getInstance()->Connect()"
不是有效的回调
您案例中有效回调的示例如下:
$funcCall = [$strCall::getInstance(), $_GET['action']];
您应该使用call_user_func_array()
代替forward_static_call_array()
,因为您没有调用静态方法 (即使您可能不是,也不是从一个重要的上下文中调用它们。
$_POST
不会按名称神奇地映射到方法的参数。你必须使用反射。请参阅Passing named parameters to a php function through call_user_func_array