Codeigniter中的结构函数

时间:2011-10-12 12:20:07

标签: php codeigniter model

我正在尝试在codeigniter中构建我的函数以保持最佳状态。基本上我可以做出类似的事情:

$this->my_model->get_everything();
$this->my_model_db->write_all();

但当然我最终会制作并加载许多文件。我宁愿像我的JS代码那样构造它并扩展我的模型:

$this->my_model->db->write_all();

这对我来说是最合乎逻辑且最易读的解决方案。我试过了,但我对PHP对象和类(但)并不是那么好。有没有一种简单的方法来实现这个目标?还是有更实用的解决方案?谢谢!

1 个答案:

答案 0 :(得分:4)

我认为你是在倒退。

您可以使用所需的常规功能创建多个扩展内置CI_Model类的模型。然后,您可以继承这些新类以进行特定实现。

例如,假设您正在使用数据库表名帐户

首先,创建一个扩展CI_Model的类,该类包含用于处理一组数据的通用函数(CI_DB_Result,模型​​数组,数组数组等)。类似的东西:

abstract class table_model extends CI_Model
{
  function __construct()
  {
    parent::__construct();
  }

  public function write_all()
  {
    // do some stuff to save a set of data
    // maybe add some logging in here too, if it's on development
    // and how about some benchmarking for performance testing too
    // you get the idea
  }
}

接下来,创建一个扩展table_model但具有特定于 Accounts 表的函数的类。

public class accounts_model extends table_model
{
  function __construct()
  {
    parent::__construct();
  }

  public function get_everything()
  {
    // whatever it takes to get everything...
  }
}

最后,你可以做像...这样的事情。

$this->account_model->get_everything();
$this->account_model->write_all();

如果你有另一个模型(my_model),你也可以这样做:

$this->my_model->get_just_a_few_things();
$this->my_model->write_all();