gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 13:15:14 25 4
gpt4 key购买 nike

我花了一些时间在 GoogleSO 上搜索,但未能找到这个简单问题的答案:

什么样的问题会在 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_WARNINGE_COMPILE_WARNING 之间的区别在于 E_COMPILE_WARNING 是在脚本仍在编译时生成的。

E_COMPILE_WARNINGE_COMPILE_ERROR 类似,它是在编译期间生成的,但是 E_COMPILE_WARNING 不会像 那样阻止脚本执行>E_COMPILE_ERROR 确实如此。比较一下E_ERRORE_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 编译脚本,不喜欢 declare(foo='bar');,但无论如何都会返回并执行脚本(与 E_COMPILE_ERROR 相反,$this = 2;,这将立即停止执行(和编译))。

希望这对您有所帮助!

关于php - 什么样的问题会在 PHP 中生成 E_COMPILE_WARNING?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8768149/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com