Php 在Codeigniter中访问和更改模型类中的变量
我想访问和更改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
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并试图劫持线程。请停下来。