2015-12-31 44 views
2

在codeigniter中,我想在每次調用模型的方法時初始化變量。
我嘗試過使用構造函數,但構造函數僅在您的模型被加載一次之後調用,並且之後對加載的類/模型的方法的任何調用都不會再次調用其構造函數。codeigniter初始化每個模型方法調用的變量

+0

請張貼您的代碼和您試過的東西 – Vedda

回答

0

我建議創建模型並實例化標準PHP之類的對象。雖然不是標準的CodeIgniter實踐,但有時使用基本的PHP是最好的方法。

例如,我放在models/Foo.phpFoo類:

class Foo { 
    protected $bar; 

    public function baz() { 
     echo $this->bar; 
    } 

    public function __constuct($bar) { 
     $this->bar = $bar; 
    } 
} 

然後,我require_once文件,每當我需要啓動一個新的實例。這使我可以靈活地使用不同的參數創建新的對象。

如果您需要訪問全球CodeIgniter對象,你總是可以創建一個$ci屬性,並指定它的get_instance()值在構造函數的開始。

+0

我想要一些與ci相關的東西而不是核心php,無論如何thanx的努力 –

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

    } 
+0

我不能每次都傳遞變量,基本上我想要的變量被模型類賦予默認值,執行一些邏輯比我需要更新這些變量並返回更新值或其他默認值。 –

+0

@KaushilRambhia是那些變量常量?或生成? – Nassim

+0

@KaushilRambhia在這種情況下,爲什麼不在數據庫中創建一個表並將這些值存儲在該表中,從數據庫中讀取模型方法中的這些變量並在需要時更新它們 – Nassim