示例:
<?php
class a{
public function func(){
return "a";
}
}
class b{
public function func(){
return "b";
}
}
$input = "a"; // Would come from user input
eval('$duck = new '.$input.'();');
$duck->func(); // Returns a in this case
有没有办法在不使用eval()
的情况下执行此操作?
答案 0 :(得分:8)
当然,你可以在没有eval()
的情况下完成。 PHP将把包含类名的字符串或文字作为new
运算符的参数。
$duck = new $input; // parentheses are optional
echo $duck->func();
答案 1 :(得分:1)
是的,您可以将类名存储到字符串中,例如:
$input = "a";
$duck = new $a();
if(is_callable($duck',"func")){
$duck->func();
}
会起作用