eval('class this { ');
eval('function this($l1,$l2) {
if($l1==0) { throw new ErrorException("error"); }
echo $l1.$l2;
}}');
try {
$t = new this(0,1);
}
catch(Exception $e) {
echo $e->getMessage();
}
为什么这段代码不起作用?
Parse error: syntax error, unexpected $end, expecting T_FUNCTION in .......(4) : eval()'d code on line 1
Parse error: syntax error, unexpected '}' in.......(9) : eval()'d code on line 4
Fatal error: Class 'this' not found in .......on line 12
答案 0 :(得分:4)
你不能eval()
像class this {
这样的未公开声明。您必须将整个块放入一个字符串并运行eval()
一次。
尽管如此,可能没有理由首先使用eval()
。你想做什么?
答案 1 :(得分:2)
eval
接受完整且有效的一段PHP代码。 class this {
无效,因为最终没有}
。
答案 2 :(得分:2)
像Pekka说的那样,虽然你可以将代码附加到eval()
这样的变量中:
$textToEval = 'class this { ';
$textToEval .= 'function this($l1,$l2) {
if($l1==0) { throw new ErrorException("error"); }
echo $l1.$l2;
}}';
eval($textToEval);