我花了一些时间搜索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之间的关系进行比较,前者停止执行,后者允许执行继续.
<?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).
希望这可以帮助!