【发布时间】:2014-03-09 20:02:24
【问题描述】:
我正在尝试在 php 中构建路由脚本。
它目前正在工作,但现在我想添加参数,这就是我卡住的地方。
我当前使用的代码:
$controllerName 是类的名称。 $action 是要调用的方法的名称。
$controllerClass = new $controllername();
$controllerClass->$action();
我要解析到方法中的参数在一个数组中。
我的问题是在被调用的方法中对对象内的(公共)变量进行引用,所以如果我使用:
call_user_func_array()
我遇到错误:Using $this when not in object context
有人有解决这个问题的好主意吗?
编辑:发现我的问题,当我使用 call_user_func_array() 时,我将类名作为参数而不是对象。这就是为什么它不是对象模式而是静态模式的原因。
【问题讨论】:
-
你是如何在你的代码中调用 call_user_func_array() 的?
-
@AbhikChakraborty call_user_func_array(array($classname, $action), $methodparams);但那当然应该是类的实例而不是类名.... thx
-
你确定 $action 正在返回一个字符串作为 method_name 并且在类中定义了相同的字符串吗?
-
是的,但我修复了 call_user_func_array() 中的错误,我给出了类的名称而不是类的对象,所以这就是它在静态上下文中而不是在对象上下文中的原因。
标签: php