首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >php 7.2中未定义的常量错误

php 7.2中未定义的常量错误
EN

Stack Overflow用户
提问于 2018-01-13 11:49:10
回答 4查看 109.7K关注 0票数 21

我在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‘(这将在未来版本的

中抛出错误)

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-01-13 12:01:38

每当PHP检测到未定义的constant的使用时,就会出现这种常见的警告。

下面是一个在PHP中定义常量的示例:

代码语言:javascript
复制
define('PI', 3.14);

以下是可能导致该问题的一些情况的列表:

  • Forgetting在变量名的开头使用$符号。

$name = "Aniket";回显名称;//忘记在名称前加上$

上面的代码将抛出:注意:使用未定义的常量名称-假定为‘name’。因为变量“name”前面没有美元符号,所以PHP假定我试图引用一个名为“name”.

  • Forgetting的常量变量来将字符串括起来。

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

票数 30
EN

Stack Overflow用户

发布于 2018-04-26 21:37:09

此外,对于那些刚接触wordpress插件开发的人来说,在使用常量之前,他们似乎不明白定义“常量”意味着什么。

下面是抛出错误的示例:

代码语言:javascript
复制
add_action('wp_enqueue_scripts', myprefix_load_styles);

在钩子中直接声明这样的函数是产生这样的错误的一种方式。而是:

代码语言:javascript
复制
add_action('wp_enqueue_scripts', 'myprefix_load_styles');

请注意,函数名称现在包含在引号中。如果这就是你的方案,这应该是可行的。

票数 7
EN

Stack Overflow用户

发布于 2018-07-17 19:54:03

我刚刚创建了一个PHP作业,用于递归清理PHP项目中的所有文件,并自动引用所有字符串,这些字符串是用于数组语法的方括号内的未定义常量。

观察:此修复仅针对像$akey1这样的数组使用,它将自动转换为$a'key1‘。清理过程不会解析和计算项目中定义的常量列表,以便将它们列入白名单,以便在所有可能的上下文中使用时不带引号。

建议先在DEV上为您的项目运行,检查功能后再推送上线。

快速使用:

代码语言:javascript
复制
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://github.com/eyroot/lx-utils

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48236765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档