可以从字符串中调用类和方法吗?
类似的东西:
// $_REQUEST['var'] = 'House-Kitchen';
$var = explode('-',$_REQUEST['var']);
echo $var[0]->$var[1];
答案 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 :(得分:1)
更好的方法是尝试。
我确实尝试过:
$House = new stdClass();
$House->Kitchen = "visible result";
$_REQUEST['var'] = 'House-Kitchen';
$var = explode('-',$_REQUEST['var']);
echo $$var[0]->$var[1];
有效。注意:你需要为第一个元素使用double $(使用带有$var[0]
名称的变量)。
要非常小心:这是一个很高的安全漏洞(你允许每个人在当前定义的类上调用方法)。