在codeigniter中,我想在每次调用模型方法时初始化变量 我尝试使用构造函数,但只有在模型加载一次后才调用构造函数,之后对加载的类/模型方法的任何调用都不会再调用它的构造函数。
答案 0 :(得分:0)
我建议创建模型并实例化标准PHP之类的对象。虽然不是标准的CodeIgniter实践,但有时使用基本的PHP是最好的方法。
例如,我将Foo
课程安排在models/Foo.php
:
class Foo {
protected $bar;
public function baz() {
echo $this->bar;
}
public function __constuct($bar) {
$this->bar = $bar;
}
}
然后,我require_once
该文件,并在需要时启动一个新实例。这使我可以灵活地使用不同的参数创建新对象。
如果您需要访问全局CodeIgniter
对象,则始终可以创建$ci
属性,并在构造函数的开头为其指定值get_instance()
。
答案 1 :(得分:0)
我想到的第一个想法是:
每当您调用该模型示例时,将这些变量作为参数发送到模型:
<强>控制器强>:
$this->load->model('Product_mdl');
$this->product_mdl->init(10,20,30);
型号(product_mdl.php)
<?php
class Product_mdl extends CI_Model
{
private $var1 = $var2 = $var3 = NULL;
public function init($value1, $value2, $value3)
{
$this->var1 = $value1;
$this->var2 = $value2;
$this->var3 = $value3;
}
// now you can call $this->varx in the remaining model code
...
}