2011-12-13 7 views
10

A mi modo de crear modelos de CodeIgniter en este momento es (es decir, ningún constructor, teniendo que pasar identificación de usuario todo el tiempo y se limita a un objeto):¿Cómo puedo usar modelos adecuados orientados a objetos en CodeIgniter con constructores?

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

Pero me gustaría hacerlo de esta manera:

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

ACTUALIZACIÓN: Quizás solo un modelo de usuario fue un mal ejemplo.

Por ejemplo, si tengo una lista de compras que tiene varios artículos que me gustaría usar PHP de esta manera:

$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 se siente fundamentalmente roto en el manejo de PHP orientado a objetos de esta manera. ¿Alguien tiene alguna solución que aún pueda usar el superobjeto dentro de cada modelo?

+2

¿Está de acuerdo con el nuevo operador? – Harsh

+0

Codeigniter utiliza un gran superobjeto llamado CI. No creo que sea una buena idea agregar nuevos objetos a ese marco. En cualquier caso, deberían heredar de él. –

+0

Me gustaría poder almacenar objetos en otros objetos –

Respuesta

13

Puede hacerlo como lo haría normalmente:

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

O bien, puede depender de un modelo de nivel de tabla para devolver un modelo a nivel de registro:

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

Mientras tanto, en 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 
} 
0

puede subclass el modelo o simplemente añadir algo en el constructor Creo que necesita ajustar el código para hacerlo de la manera en que lo desea ...

Cuestiones relacionadas