我在代码中发现了一个关于类常量的怪异问题。虽然代码似乎可以正常运行,但我无法弄清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
Run Code Online (Sandbox Code Playgroud)
对我来说奇怪的是,$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 ...
}
Run Code Online (Sandbox Code Playgroud)
我将Result的常量传递给它自己的构造函数是否有问题?
我已找到此通知的原因并进行了修复。
我在Result课堂上有这条线:
protected $code = PAYMENT_ERROR;
Run Code Online (Sandbox Code Playgroud)
这是造成上述通知的原因,因为我没有正确定义。我本来希望PHP在实例化新的Class时告诉我错误消息的确切来源,而不仅仅是指向实例化该Class的行。
因此,解决方法是将其更改为:
protected $code = self::PAYMENT_ERROR;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8518 次 |
| 最近记录: |