我花了一些时间搜索Google以及SO,并且无法找到这个简单问题的答案:
@H_502_1@什么样的问题会在PHP中生成E_COMPILE_WARNING?
@H_502_1@PHP manual entry on the subject docs说E_COMPILE_WARNING:
@H_502_1@Compile-time warnings (non-fatal errors). This is like an E_WARNING,@H_502_1@但我不确定这会构成什么.常规E_WARNING与Zend脚本引擎引发的警告之间有什么区别?有人可以解释并提供代码片段(如果适用)吗?
except it is generated by the Zend Scripting Engine.
基本上,E_WARNING和E_COMPILE_WARNING之间的区别在于脚本仍在编译时生成E_COMPILE_WARNING.
@H_502_1@E_COMPILE_WARNING类似于E_COMPILE_ERROR,因为它是在编译期间生成的,但E_COMPILE_WARNING不会像E_COMPILE_ERROR那样阻止脚本执行.将它与E_ERROR和E_WARNING之间的关系进行比较,前者停止执行,后者允许执行继续.
@H_502_1@例如,以下代码生成E_COMPILE_WARNING:
原文链接:https://www.f2er.com/php/130494.html<?PHP echo "\n"; echo "Hello World"; echo "\n\n"; var_dump(error_get_last()); declare(foo='bar'); ?>@H_502_1@输出:
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) }@H_502_1@注意警告如何在另一个输出之前显示(即使“Hello World”在源代码中排在第一位),第5行的var_dump语句引用第6行发生的错误.PHP编译脚本,不喜欢声明(foo =’bar’);,但是仍然返回并执行脚本(而不是像$this = 2;这样会立即停止执行(和编译)的E_COMPILE_ERROR). @H_502_1@希望这可以帮助!