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


PHP access property of individual method inside 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值有数据库结果集?

在转储对象数据之前,调用图形方法来实际获取数据。例如

$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应用程序和单元测试的知识。