如何在CodeIgniter中使用适当的面向对象模型和构造函数?

时间:2011-12-13 18:32:46

标签: php codeigniter model

目前我创建CodeIgniter模型的方式是(即没有构造函数,必须一直传递userID并限制为一个对象):

$this->load->model('User');
$this->user->set_password($userID, $password);

但我想这样做:

$this->load->model('User');
$User = new User($userID);
$User->set_password($password);

更新:也许只是一个用户模型是一个糟糕的例子。

例如,如果我有一个包含各种项目的购物清单,我想以这种方式使用PHP:

$this->load->model('List');
$this->load->model('Item');

$List = new List();
$items[] = new Item($itemName1, $itemPrice1);
$items[] = new Item($itemName2, $itemPrice2);

$List->add_items($items);

CodeIgniter在以这种方式处理PHP OO时感觉从根本上破裂了。有没有人能够在每个模型中使用超级模型?

2 个答案:

答案 0 :(得分:13)

你可以像往常那样做:

require_once(APPPATH.'models/User.php');
$User = new User($userID);

或者,您可以依赖表级模型来返回记录级模型:

$this->load->model('users_model'); // users (plural) is the table-level model
$User = $this->users_model->get_user($userID);

同时,在users_model

require_once(APPPATH.'models/User.php');

public function get_user($userID)
{
  // get a record from the db
  // map record to model
  // return model
}

答案 1 :(得分:0)

您可以subclass模型或只是在constructor中添加内容 我认为您需要调整代码,以便按照您希望的方式进行...