什么样的问题会在PHP中生成E_COMPILE_警告?
我花了一点时间在谷歌上搜索,也没有找到这个简单问题的答案: 什么样的问题会在PHP中生成一个什么样的问题会在PHP中生成E_COMPILE_警告?,php,Php,我花了一点时间在谷歌上搜索,也没有找到这个简单问题的答案: 什么样的问题会在PHP中生成一个E\u COMPILE\u警告? E\u COMPILE\u警告: <?php echo "\n"; echo "Hello World"; echo "\n\n"; var_dump(error_get_last()); declare(foo='bar'); ?> 编译时警告(非致命错误)。这就像一个E_警告, 但它是由Zend脚本引擎生成的 但我
E\u COMPILE\u警告
?
E\u COMPILE\u警告
:
<?php
echo "\n";
echo "Hello World";
echo "\n\n";
var_dump(error_get_last());
declare(foo='bar');
?>
编译时警告(非致命错误)。这就像一个E_警告,
但它是由Zend脚本引擎生成的
但我不确定这将构成什么。常规的
E_警告
与Zend脚本引擎发出的警告有什么区别?有人能解释一下并提供一个代码片段吗?基本上,E\u警告
和E\u编译警告
的区别在于E\u编译警告
是在脚本仍在编译时生成的
E\u COMPILE\u WARNING
与E\u COMPILE\u ERROR
类似,它是在编译时生成的,但E\u COMPILE\u WARNING
不会像E\u COMPILE\u ERROR
那样阻止脚本执行。将其与E_ERROR
和E_WARNING
之间的关系进行比较,前者停止执行,后者允许继续执行
例如,以下代码生成一个E\u COMPILE\u警告
:
<?php
echo "\n";
echo "Hello World";
echo "\n\n";
var_dump(error_get_last());
declare(foo='bar');
?>
注意警告是如何在其他输出之前显示的(即使“Hello World”在源代码中是第一个),第5行的var\u dump
语句引用了第6行发生的错误。PHP编译脚本,不喜欢declare(foo='bar')
,但返回并执行脚本(与E\u COMPILE\u错误
类似$this=2;
,这将立即停止执行(和编译)
希望这有帮助 您可以使用以下代码直接生成输出警告:
$cmd = "declare(foo='bar');";
eval($cmd);
生成警告的代码是?@Dagon没错,这就是问题所在。:)您可以在发出这些警告的PHP源代码中看到: