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?
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
}
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…