Codeigniter My_Controller错误,默认对象为空值

时间:2013-01-23 09:23:09

标签: codeigniter

我的问题是我使用php版本5.4会在MY_Controllar中出现此错误,请查看截图如下

enter image description here

但是在php version 5.3下面没有问题

这是我的代码

 <?php

class MY_Controller extends CI_Controller {

    function __construct()
    {
        parent::__construct();
        $data->the_leave_data = $this->leave_data(); <--- line 8 is here
        $this->the_leave_data = $data->the_leave_data;
        $this->load->vars($data);
    }

    function leave_data()
    {
        $data = array();
        $this->load->model('leave_data_model');
        $staff_id = $this->session->userdata('staff_id');
        if($query = $this->leave_data_model->get_by('staff_id',$staff_id))
        {
            $data['leave_data_records'] = $query;           
        }
        var_dump($data);
        return $data;
    }

}

?>

这是来自$ data

的var_dump返回值
leave_data_records' => 
object(stdClass)[21]
  public 'leave_data_id' => string '1' (length=1)
  public 'staff_id' => string '1' (length=1)
  public 'annual_leave' => string '1.0' (length=3)
  public 'sick_leave' => string '0.0' (length=3)
  public 'annual_leave_balance' => string '0.0' (length=3)
  public 'sick_leave_balance' => string '0.0' (length=3)
  public 'year' => string '2012' (length=4)

任何想法如何解决?感谢

2 个答案:

答案 0 :(得分:5)

你使用的是PHP 5.4吗? PHP 5.4有严格的标准。您需要将$ data声明为stdClass的对象:

$data = new stdClass();    
$data->the_leave_data = $this->leave_data();

答案 1 :(得分:0)

表示$this->leave_data();为空。

我没有看到在控制器内部加载数据的位置。如果你在其他地方定义它,那么它就会从CI_Controller内加载...你应该parent::$this->leave_data();