如何从字符串中调用Class->方法?

时间:2012-01-24 14:09:43

标签: php string class function methods

可以从字符串中调用类和方法吗?

类似的东西:

// $_REQUEST['var'] = 'House-Kitchen';

$var = explode('-',$_REQUEST['var']);

echo $var[0]->$var[1];

2 个答案:

答案 0 :(得分:3)

是。这是可能的。如果$var[0]类的名称,则以下内容将起作用。

call_user_func(array($var[0], $var[1]));

如果$var[0]类实例的名称,那么以下内容将有效。

call_user_func(array(get_class(${$var[0]}), $var[1]));

链接:

  1. call_user_func
  2. get_class

答案 1 :(得分:1)

更好的方法是尝试。

我确实尝试过:

$House = new stdClass();
$House->Kitchen = "visible result";

$_REQUEST['var'] = 'House-Kitchen';

$var = explode('-',$_REQUEST['var']);

echo $$var[0]->$var[1];

有效。注意:你需要为第一个元素使用double $(使用带有$var[0]名称的变量)。

要非常小心:这是一个很高的安全漏洞(你允许每个人在当前定义的类上调用方法)。