试图在函数内获得属性,因此不确定如何做到这一点。这是我的类:
<?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值有数据库结果集?
在转储对象数据之前,调用图形方法来实际获取数据。例如
$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);
如果这解决了你的问题,我建议你应该阅读面向对象的概念。问候。
我将展示与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应用程序和单元测试的知识。