Php 在Codeigniter中访问和更改模型类中的变量

Php 在Codeigniter中访问和更改模型类中的变量,php,codeigniter,codeigniter-2,Php,Codeigniter,Codeigniter 2,我想访问和更改codeigniter中模型类中已经设置的变量 CLASS m_example extends CI_Model{ var $A; public function __construct(){ $this->A=21; } public function check_v() { return $this->A; } } 因此,我想在调用控制器中的函数check_v()之前更改变量$A 谢谢 首先,负荷模型: $this->load->model('m_ex

我想访问和更改codeigniter中模型类中已经设置的变量

CLASS m_example extends CI_Model{
var $A;
public function __construct(){
$this->A=21;
}
public function check_v()
{
return $this->A;
}
}
因此,我想在调用控制器中的函数check_v()之前更改变量$A

谢谢

首先,负荷模型:

$this->load->model('m_example');
访问它:

$this->m_example->a = "something";

您可以使用getter和setter方法,如下所示

class m_example extends CI_Model{
   private $A;

   public function __construct(){
      $this->A=21;
   }

   // get the value
   public function get_v()
   {
      return $this->A;
   }

   // set the value
   public function set_v($val){
      $this->A = $val;
   }
}
然后呢,

$this->load->model('m_example');
$this->m_example->set_v(50);
echo $this->m_example->get_v();

因为您在构造函数中使用$this->设置了一个,所以它对模型中的任何方法都立即可用。因此,如果$this->A被其他方法更改,则check_v()将返回最新/更改的版本

function hijackA($newvalue){

$this->A = $newvalue ;
} 
内部控制器

$this->m_example->hijackA($newvalue) ;
$a = $this->m_example->check_v() ; 

check_v()现在将返回$newvalue

我希望您知道,从5.0开始,在定义变量时,您应该使用
public
protected
private
,而不是
var
。谢谢@tereško,我从来没有认真对待过它。@p.vansia您能解释一下吗?实际上,还有一件过时的事情,这在您的示例中不存在,但在CodeIgniter的代码中都有:通过引用分配对象。使用
$CI=&get_instance()
(或类似的引用对象赋值)被认为是过时的,在PHP 5.x中可能会导致内存泄漏,因为这会干扰重新计数。有关更多信息,请参阅。您一直在使用codeigniter并试图劫持线程。请停下来。