Hello! 欢迎来到小浪资源网!


PHP 8.0 中报错“Attempt to assign property on null”的原因及解决方法是什么


PHP 8.0 中报错“Attempt to assign property on null”的原因及解决方法是什么

php 类中存储数据时报错“attempt to assign Property on null”

php 8.0 中,使用类似下例的代码存储数据时会出现“attempt to assign property on NULL”的错误:

class Send {     private $_email;      public function sendMail()     {         $this->->_email->to = 'xxx';     } }

而在 php 7.x 中,并不会出现此类错误。原因在于:

php 8.0 中不再隐式创建对象

立即学习PHP免费学习笔记(深入)”;

在 php 7.x 及更早版本中,当尝试访问一个不存在的属性时,php 会自动创建一个 stdclass 对象。但在 php 8.0 中,这一行为已被更改,访问一个非对象属性会直接抛出一个错误。

解决方案

解决这个问题的方法是:

  • 构造函数中初始化 $_email 为一个 stdclass 对象或其他对象。
  • 确保在使用 $_email 之前先对其进行初始化。

相关阅读