PHP访问对象内部各个方法的属性

时间:2014-07-16 22:33:13

标签: php function oop object

尝试在函数内部获取属性,因此不确定如何执行此操作。 这是我的班级:

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

class Data extends CI_Controller {

   public $data;

   public function __construct()    {
       parent::__construct();
       $this->load->model('months');
       $this->load->driver('cache');

   }
}

public function graph1() {

    $this->data = $this->months->get_months();
    $this->layout->view('graph1', $this->data);
}

因此尝试在另一个类中获取graph1()内的$ data值,例如:

$object = new Data();
print_r($object->data);

这给了我一个空白输出,如何让$ data值具有数据库结果集?

2 个答案:

答案 0 :(得分:1)

在转储对象数据之前,请调用graph方法以实际获取数据。即。

$object = new Data();
$object->graph1();
print_r($object->data);

您也可以从构造函数中调用graph1,如:

public function __construct()    {
   parent::__construct();
   $this->load->model('months');
   $this->load->driver('cache');
   $this->graph1();
}

这样你就可以实际使用:

$object = new Data();
print_r($object->data);

如果这样可以解决您的问题,建议您阅读OOP concepts。问候。

答案 1 :(得分:-4)

我将展示适用于Web应用程序和单元测试的真正解决方案。

将数据控制器上的内容更改为:

public function graph1() {

   $this->data = $this->months->get_months();
   $this->layout->view('graph1', $this->data);

}

要:

public function graph1() {

   $this->data = $this->months->get_months();
   $this->layout->view('graph1', $this->data);
   return $this->data;
}

返回不会导致布局和视图出现问题。并将正确的数据返回到单元测试:

public function testgraph1() {      

    $object = new Data();

    $out = $object->graph1();
    print_r($out);

    $this->assertArrayHasKey('11', $out);
}

所以另一个答案是不正确的,并且在构造函数中调用graph1()时会导致布局出现问题。我不需要阅读有关OOP的内容,但会建议回答错误的人阅读有关Web应用程序和单元测试的内容。