【问题标题】:PHP calling 'unknown' methods with parametersPHP调用带有参数的“未知”方法
【发布时间】: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


【解决方案1】:

您正在使用$this 不在类定义中的某个地方。 $this 只能在类中使用。

【讨论】:

  • 我修复了 call_user_func_array() 中的错误,我给出了类的名称而不是类的对象,这就是它在静态上下文中而不是在对象上下文中的原因
  • @user1971401 如果仍有问题,请发布更新后的代码并进行修复。
猜你喜欢
  • 1970-01-01
  • 2022-08-09
  • 1970-01-01
  • 2012-07-25
  • 1970-01-01
  • 2013-01-04
  • 1970-01-01
  • 2016-09-06
  • 1970-01-01
相关资源
最近更新 更多