尝试在函数内部获取属性,因此不确定如何执行此操作。 这是我的班级:
<?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值具有数据库结果集?
答案 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应用程序和单元测试的内容。