【问题标题】:Codeigniter how to use Factory pattern?Codeigniter如何使用工厂模式?
【发布时间】:2013-08-31 22:46:27
【问题描述】:

如何在 codeigniter 中使用工厂类调用。我一直在尝试将以下内容实现为库

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();

比说我对检索到的数据进行循环

foreach($res as $Factory){

$Factory->method_factory();
}

但我没有得到工厂的实例

【问题讨论】:

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

标签: codeigniter design-patterns factory


【解决方案1】:

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

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

  function get_factory_item() {
    return $factory_item;
  }
}

然后在你的控制器中你可以调用它(如果它已加载):

$this->factory->get_factory_item();

如果您需要从库中调用模型或任何 Codeigniter 内容,您可以:

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

然后您可以将其返回给控制器。我更喜欢使用图书馆(或者你可以说是工厂)来完成所有繁重的工作。

例如,我的模型将简单地返回数据对象,然后我的库将检查 num_rows() 等,最后将 result() 对象或布尔值 FALSE 返回到我的控制器。

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

希望这会有所帮助。

【讨论】:

  • 有一段时间我使用 Laravel,并没有真正使用 Codeigniter,但你所描述的似乎是有道理的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-03
  • 2016-02-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多