php 7.2 中未定义的常量错误

php
2022-08-30 19:07:47

我在php中有这些错误,但在使用php时看不到任何错误。v7.2E_WARNINGv7.1

如何解决以下错误?

/web13/web/boutique/include/Sites/Shop/NavigationHistory.php 39号线 [12-Jan-2018 22:44:20 America/Toronto] PHP 警告: 使用未定义的常量 MODULE_HEADER_SELECT_TEMPLATE_STATUS - 假定的“MODULE_HEADER_SELECT_TEMPLATE_STATUS”(这将在 PHP 的未来版本中抛出错误) 在 /var/www/clients/client1/web13/web/boutique/include/Sites/Shop/Template.php 第 356 行


答案 1

这是一个常见的警告,每当 PHP 检测到未定义常量的用法时,就会出现此警告。

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

define('PI', 3.14);

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

  • 忘记在变量名称的开头使用 $ 符号。

    $name = "Aniket";
    echo name; // forgot to add $ before name
    

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

  • 忘记在字符串两边加上引号。

    echo $_POST[email];
    

    在上面的例子中,我未能在变量周围放置引号。此代码将抛出:注意:使用未定义的常量名称 - 假定为“电子邮件”。$_POST“email”

    要解决此问题,我显然必须执行以下操作:

    echo $_POST["email"];
    

根据 PHP 7.2.x 中已弃用的功能,您不应使用未定义的常量,因为:

不存在的全局常量的未加引号字符串被视为其本身的字符串。

此行为过去会发出E_NOTICE但现在将发出E_WARNING。在下一个主要版本的 PHP 中,将改为引发错误异常。

只有在使用常量值之前声明常量值时,才能防止出现这种情况。E_WARNING

在上面的问题中,没有定义。MODULE_HEADER_SELECT_TEMPLATE_STATUS


答案 2

此外,对于那些不熟悉wordpress插件开发的人来说,似乎无法弄清楚在使用之前定义“常量”意味着什么......

下面是将引发错误的示例:

add_action('wp_enqueue_scripts', myprefix_load_styles);

在钩子中直接声明这样的函数是生成类似这样的错误的一种方法。相反:

add_action('wp_enqueue_scripts', 'myprefix_load_styles');

请注意,函数名称现在位于引号内。这应该有效,如果这是你的场景。


推荐