1

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

遇到 PHP 错误

严重性:警告

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

文件名:admin/newsletters.php

行号:63

这是第 63 行:

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

所以在 PHP doc 和 Google 上阅读似乎$this->data没有初始化 var,所以在我声明如下的类的构造函数中:

public function __construct() {
        parent::__construct();

        $this->data = "";
}

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

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

1 回答 1

1

您不需要像在函数式 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.
于 2013-05-16T20:56:13.740 回答