2009-03-09 8 views
1

J'utilise CodeIginter comme framework PHP. J'expliquais la situation ci-dessous: -CodeIgniter - plusieurs instances d'un modèle

J'ai besoin de trois modèles nommés: -

  • User_Model
  • Relation_Model
  • Reminder_Model

considèrent maintenant la situation:

User_Model est déjà écrit. J'écris Relation_Model. Mon ami écrira le Reminder_Model.

Relation_Model instancie User_Model, et utilise que, dans une de ses méthodes: getRelation($userID)

Reminder_Model également instancie une User_Model exemple pour son fonctionnement.

Reminder_Model doit appeler getRelation méthode de Relation_Model. Par conséquent, il doit y avoir au moins deux instances de User_Model. Un en Relation_Model, un autre en Reminder_Model.

Le problème est de savoir comment puis-je assurer l'intérieurRelation_Model, que mon User_Model exemple ne pas interférer avec l'instance User_Model de classe de mon ami Reminder_Model?

En d'autres termes, pour le code Reminder_Model, mon ami ne devrait pas avoir une connaissance interne de Relation_Model, juste pour utiliser l'une de ses méthodes getRelation. Si vous voulez connaître le besoin pour cela, dites: Reminder_Model charge le modèle de l'utilisateur qui s'est connecté (disons user-A), Relation_Model fonctionne avec les modèles des utilisateurs qui sont membres de l'équipe de l'utilisateur-A .

Répondre

3

Je ne suis pas sûr de comprendre pourquoi vous ne pouvez pas utiliser la même instance de la classe User_Model, mais peut-être charger le modèle deux fois, une fois avec le vieux modèle $ this-> load-> ('User_Model') et la seconde avec $ this-> load-> model ('Use_Model', 'Second_User_Model') aidera. Ou vous pouvez clone l'objet comme $ this-> second_user_model = cloner $ this-> user_model.

+0

La première méthode, exigera, l'implémenteur de Reminder_Model avoir une connaissance interne de Relation_Model (le fait que dans Relation_Model, j'ai instancié User_Model avec le nom de Second_User_Model!). Oui, j'ai aussi pensé au clonage. – Sabya

Questions connexes