我在php v7.2
中有这些错误,但在使用php v7.1
时看不到任何E_WARNING
。
如何解决以下错误?
PHP /web13/web/boutique/includes/Sites/Shop/NavigationHistory.php第39行12-Jan-2018 22:44:20美国/多伦多
警告:在第356
行的/var/www/clients/client1/web13/web/boutique/includes/Sites/Shop/Template.php中使用未定义的常量MODULE_HEADER_SELECT_TEMPLATE_STATUS -假定为'MODULE_HEADER_SELECT_TEMPLATE_STATUS‘(这将在未来版本的
中抛出错误)
发布于 2018-01-13 12:01:38
每当PHP检测到未定义的constant的使用时,就会出现这种常见的警告。
下面是一个在PHP中定义常量的示例:
define('PI', 3.14);
以下是可能导致该问题的一些情况的列表:
$name = "Aniket";回显名称;//忘记在名称前加上$
上面的代码将抛出:注意:使用未定义的常量名称-假定为‘name’。因为变量“name”前面没有美元符号,所以PHP假定我试图引用一个名为“name”.
echo $_POSTemail;
在上面的例子中,我没有用引号将$_POST
变量“email”
括起来。此代码将抛出:注意:使用未定义的常量名称-假定为‘email’。
要解决这个问题,我显然必须执行以下操作:
echo $_POST"email";
根据Deprecated features in PHP 7.2.x的说法,您不应该使用未定义的常量,因为:
作为不存在的全局常量的
未加引号的字符串将被视为自身的字符串。
此行为过去用于发出E_NOTICE,但现在将发出E_WARNING。在PHP的下一个主要版本中,将抛出一个错误异常。
只有在使用常量值之前声明该常量值,才能防止此E_WARNING
。
在上面的问题中,没有定义MODULE_HEADER_SELECT_TEMPLATE_STATUS
。
发布于 2018-04-26 21:37:09
此外,对于那些刚接触wordpress插件开发的人来说,在使用常量之前,他们似乎不明白定义“常量”意味着什么。
下面是抛出错误的示例:
add_action('wp_enqueue_scripts', myprefix_load_styles);
在钩子中直接声明这样的函数是产生这样的错误的一种方式。而是:
add_action('wp_enqueue_scripts', 'myprefix_load_styles');
请注意,函数名称现在包含在引号中。如果这就是你的方案,这应该是可行的。
发布于 2018-07-17 19:54:03
我刚刚创建了一个PHP作业,用于递归清理PHP项目中的所有文件,并自动引用所有字符串,这些字符串是用于数组语法的方括号内的未定义常量。
观察:此修复仅针对像$akey1这样的数组使用,它将自动转换为$a'key1‘。清理过程不会解析和计算项目中定义的常量列表,以便将它们列入白名单,以便在所有可能的上下文中使用时不带引号。
建议先在DEV上为您的项目运行,检查功能后再推送上线。
快速使用:
git clone https://github.com/eyroot/lx-utils lx-utils
cd lx-utils && composer install --no-dev
php run/cleanUpSquareBrackets.php /path/you/want/to/clean/up
完整的使用说明和源代码在页面上:
https://stackoverflow.com/questions/48236765
复制相似问题