微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

什么样的问题会在PHP中生成E_COMPILE_WARNING?

我花了一些时间搜索Google以及SO,并且无法找到这个简单问题的答案:

什么样的问题会在PHP生成E_COMPILE_WARNING?

PHP manual entry on the subject docs说E_COMPILE_WARNING:

Compile-time warnings (non-Fatal errors). This is like an E_WARNING,
except it is generated by the Zend Scripting Engine.

但我不确定这会构成什么.常规E_WARNING与Zend脚本引擎引发的警告之间有什么区别?有人可以解释并提供代码片段(如果适用)吗?

基本上,E_WARNING和E_COMPILE_WARNING之间的区别在于脚本仍在编译时生成E_COMPILE_WARNING.

E_COMPILE_WARNING类似于E_COMPILE_ERROR,因为它是在编译期间生成的,但E_COMPILE_WARNING不会像E_COMPILE_ERROR那样阻止脚本执行.将它与E_ERROR和E_WARNING之间的关系进行比较,前者停止执行,后者允许执行继续.

例如,以下代码生成E_COMPILE_WARNING:

<?PHP
    echo "\n";
    echo "Hello World";
    echo "\n\n";
    var_dump(error_get_last());
    declare(foo='bar');
?>

输出

Warning: Unsupported declare 'foo' in e_compile_warning.PHP on line 6

Hello World

array(4) {
  ["type"]=>
  int(128)
  ["message"]=>
  string(25) "Unsupported declare 'foo'"
  ["file"]=>
  string(124) "e_compile_warning.PHP"
  ["line"]=>
  int(6)
}

注意警告如何在另一个输出之前显示(即使“Hello World”在源代码中排在第一位),第5行的var_dump语句引用第6行发生的错误.PHP编译脚本,不喜欢声明(foo =’bar’);,但是仍然返回并执行脚本(而不是像$this = 2;这样会立即停止执行(和编译)的E_COMPILE_ERROR).

希望这可以帮助!

原文地址:https://www.jb51.cc/php/130494.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐