这个评估代码有什么错误?

发布于 2024-10-11 02:43:16 字数 545 浏览 2 评论 0原文

 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
 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();
}

Why is this code not working?

Errors:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

泛泛之交 2024-10-18 02:43:16

您不能 eval()class this { 这样的未封闭语句。您必须将整个块放入一个字符串中并运行 eval() 一次。

也就是说,首先可能没有理由使用eval()。你想做什么?

You can't eval() an unclosed statement like class this {. You'd have to put the entire block into one string and run the eval() once.

That said, there is probably no reason to use eval() in the first place. What are you trying to do?

情深如许 2024-10-18 02:43:16

eval 接受完整且有效 的 php 代码。 class this { 无效,因为最后没有 }

eval accepts complete and valid piece of php code. class this { is not valid, bacause there is no } in the end.

花桑 2024-10-18 02:43:16

就像 Pekka 所说,尽管您可以将代码附加到变量中的 eval() 中,如下所示:

$textToEval = 'class this {  ';
$textToEval .= 'function this($l1,$l2) {
     if($l1==0) { throw new ErrorException("error"); }
     echo $l1.$l2;
     }}';
eval($textToEval);

Like Pekka said, though you could append the code to eval() in a variable like so:

$textToEval = 'class this {  ';
$textToEval .= 'function this($l1,$l2) {
     if($l1==0) { throw new ErrorException("error"); }
     echo $l1.$l2;
     }}';
eval($textToEval);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文