2013-08-31 37 views
2

如何在codeigniter中使用工厂类调用。我一直都努力实现以下为库Codigniter如何使用工厂模式?

class MyClass { 

    public $_class = "Factory"; 

    /* 
     =================================== 
     On Create 
     =================================== */ 

    public function __construct() { 

     $this->_db =& get_instance(); 

} 
    //other methods 
} 

class Factory { 

    private $_db; 
    /* 
     =================================== 
     On Create 
     =================================== */ 

    public function __construct($data, $db) { 
     $this->_db = $db; 
} 
//factory methods 
} 

$obj = new MyClass(); 
$res = $obj->call_method_MyClass(); 

不是让说,我就retrived数据

foreach($res as $Factory){ 

$Factory->method_factory(); 
} 

一个循环,但我没有得到一个实例的工厂

+1

当你运行上面的代码时你期望发生什么? –

回答

0

我只需遵循正常的库模式,基本上是用户指南中描述的 - 它的工作方式与您希望的相同:

class Factory { 
    function __construct() { 
    $this->CI =& get_instance(); 
    } 

    function get_factory_item() { 
    return $factory_item; 
    } 
} 

然后在你的控制器,你只需调用它(如果它的加载):

$this->factory->get_factory_item(); 

如果您需要调用模型或任何笨东西形成库,你会:

$this->CI->My_model->get_something($parameter); 

然后你可以将它返回给控制器。我更喜欢使用库(或可以说的工厂)来完成我所有的繁重工作。例如,我的模型将简单地返回数据对象,然后我的库将检查num_rows()等,最后返回result()对象或布尔值FALSE到我的控制器。

然后我的控制器可以做简单的检查,如if($ my_object),所以它很好,干净。

希望这会有所帮助。

+0

一段时间我使用Laravel,并没有真正使用Codeigniter,但似乎有道理你描述什么 – fefe