繁体   English   中英

PHP中未定义类常量NOTICE的原因(使用未定义常量)

[英]Reason for Undefined class constant NOTICE in PHP (Use of undefined constant)

我在代码中发现了一个关于类常量的奇怪问题。 虽然看起来代码确实可以正常工作,但我无法弄清楚PHP的原因我得到了:

Use of undefined constant PAYMENT_ERROR - assumed 'PAYMENT_ERROR' in /src/Micro/Payments/Manager.php on line 146

Manager.php函数中的代码如下所示:

$code = Result::PAYMENT_ERROR;
return new Result($code, $errMsg); // <- line 146 - causes PHP Notice

对我来说很奇怪的是, $code变量设置正确并且不会触发任何通知。 只实例化Result。

Result类非常简单:

class Result
{
    // ... boilerplate code skipped ...
    // constant is defined like this:
    const PAYMENT_ERROR = 2;

    public function __construct($code, array $messages)
    {
        $this->code = $code;
        $this->messages = $messages;
    }

    // ... other functions skipped as they are not relevat ...
}

是否存在将Result的常量传递给它自己的构造函数的问题?

我找到了这个通知的原因并修复了它。

我在Result类中有这一行:

protected $code = PAYMENT_ERROR;

这导致了上面的通知,因为我没有正确定义。 我希望PHP能够在实例化新类时告诉我错误消息来自哪里,而不是仅仅指向所述类被实例化的行。

所以解决方法是将其更改为:

protected $code = self::PAYMENT_ERROR;

查看差异define()vs const

你必须outside the class使用PAYMENT_ERROR

如果您想这样做,请使用define ()

这将完成这项工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM