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

时间:2013-05-16 20:51:22

标签: php oop pyrocms

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

  

遇到PHP错误

     

严重性:警告

     

消息:从空值

创建默认对象      

文件名:admin / newsletters.php

     

行号:63

这是第63行:

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

因此,阅读PHP doc和Google似乎var $this->data未初始化,因此在我声明如下的clase的构造函数中:

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

        $this->data = "";
}

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

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

1 个答案:

答案 0 :(得分: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.