dongrong9053
2011-12-13 18:32
浏览 41
已采纳

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

The way I create CodeIgniter models at the moment is (i.e. no constructor, having to pass userID all the time and limited to one object):

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

But I would like to do it like this:

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

UPDATE: Perhaps just a user model was a poor example.

For instance, if I have a shopping list that has various items I would like to use PHP in this way:

$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 feels fundamentally broken in handling PHP OO in this way. Does anyone have any solutions that can still use the superobject within every model?

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • douju7765 2011-12-13 18:43
    已采纳

    You can do it like you normally would:

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

    Or, you can rely on a table-level model to return a record-level model:

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

    Meanwhile, in 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
    }
    
    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • dongshetao1814 2011-12-13 18:46

    you can subclass the model or just add something in the constructor I think you need to adjust code to do it the way you're looking to…

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题