Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么样的问题会在PHP中生成E_COMPILE_警告?_Php - Fatal编程技术网

什么样的问题会在PHP中生成E_COMPILE_警告?

什么样的问题会在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脚本引擎生成的 但我

我花了一点时间在谷歌上搜索,也没有找到这个简单问题的答案:

什么样的问题会在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_警告
与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源代码中看到: