在构造函数中定义var导致“从空值创建默认对象”错误


Defining a var in constructor cause "Creating default object from empty value error"

我在我的开发服务器中使用PHP 5.4.15的PyroCMS,所以我安装了一个新的模块(由其他人创建),并一直得到这个警告:

遇到PHP错误

严重性:警告

消息:从空值创建默认对象

文件名:admin/newsletters.php

行号:63

第63行:

$this->data->pagination = create_pagination('admin/newsletters/index', $total_rows);

所以在PHP文档和谷歌中,var $this->data没有初始化所以在类的构造函数中,我声明如下:

public function __construct() {
        parent::__construct();
        $this->data = "";
}

但是错误仍然出现,所以我的问题是:

  1. 我的解决方案有什么问题?
  2. 如果我在类构造函数中声明或定义一个变量,这个变量是否初始化?(这是相关的OOP部分)

您不需要像在函数式PHP中那样初始化。在类中定义它就足以使它存在于对象中,供您随意使用。

Class extends Parent {
  public $data;
  public function __construct() {
    parent::__construct();
    $this->data = 'Hello, world!';
  }
}

作为…

$new = new Class();
echo $new->data;
// Hello, world!

同样…

$new = new Class();
$new->data = 'Goodbye, cruel world.';
echo $new->data;
// Goodbye, cruel world.