PHP call_user_func替代方案

Ric*_*ard 1 php oop fatal-error

我正在寻找一个相当于PHP的功能call_user_func.我遇到这个函数的问题是它没有进入"对象模式".通过这个,我的意思是我不能$this在课堂上使用和其他东西,所以几乎用两个词:不是oop.

我基本上需要这个,因为我正在处理请求的URL,解析它,并查看一切是否正常等等,然后执行以下行:

call_user_func(array(ucfirst( $controller . "Controller" ),  '_initAction'), $param);       
call_user_func(array(ucfirst( $controller . "Controller" ), $action . 'Action'), $param);
Run Code Online (Sandbox Code Playgroud)

因为我想动态调用"Controller"它的动作.但我不能$this$action方法中使用,因为它不是OOP.

我收到的消息:

Fatal error: Using $this when not in object context in E:\htdocs\wit\application\controller\InformationController.php on line 6
Run Code Online (Sandbox Code Playgroud)

所以我希望有人可以帮助我.

你能否告诉我,我是否以错误的方式处理这个问题?

PS:请不要向我推荐任何处理这些东西的MVC框架.我喜欢Zend,但有时候,它太沉重了:((我需要一个轻量级的设置.

Ale*_*hov 10

您可以通过在回调的第一个元素中传递对象来调用object方法:

$class = ucfirst($controller . "Controller");
$controller = new $class();
call_user_func(array($controller,  $action . 'Action'), $param);
Run Code Online (Sandbox Code Playgroud)

实际上,你甚至可以使用

$controller = new $class();
$controller->{$action . 'Action'}();
Run Code Online (Sandbox Code Playgroud)