codeigniter在每个模型方法调用上初始化变量

时间:2015-12-31 18:06:22

标签: php codeigniter constructor model

在codeigniter中,我想在每次调用模型方法时初始化变量 我尝试使用构造函数,但只有在模型加载一次后才调用构造函数,之后对加载的类/模型方法的任何调用都不会再调用它的构造函数。

2 个答案:

答案 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
    ...

    }