CodeIgniter - plusieurs instances d'un modèle
-
06-07-2019 - |
Question
J'utilise CodeIginter comme framework PHP. J'explique la situation ci-dessous: -
J'ai besoin de trois modèles nommés: -
- User_Model
- Modèle de relation
- Modèle de rappel
Examinons 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 l'utilise dans l'une de ses méthodes: getRelation ($ userID)
Reminder_Model
instancie également une instance User_Model
pour son fonctionnement.
Reminder_Model
doit appeler la méthode getRelation
de Relation_Model.
Donc, il devrait y avoir au moins deux instances de User_Model
. Un dans Relation_Model
, un autre dans Reminder_Model
.
Le problème est de savoir comment l'intérieur Relation_Model
, afin que mon instance User_Model
n'interfère pas avec User_Model
instance de la classe Reminder_Model
de mon ami?
C’est-à-dire que pour coder Reminder_Model
, mon ami ne devrait pas avoir une connaissance interne de Relation_Model
, mais simplement pour utiliser l’une de ses méthodes getRelation
.
Si vous voulez en savoir le besoin, dites: Reminder_Model charge le modèle de l'utilisateur qui s'est connecté (par exemple, utilisateur-A), Relation_Model fonctionne avec les modèles des utilisateurs membres de l'équipe de l'utilisateur-A.
La solution
Je ne suis pas sûr de comprendre pourquoi vous ne pouvez pas utiliser la même instance de la classe User_Model, mais vous pouvez peut-être charger le modèle deux fois, une fois avec l'ancien $ this- > load- > model (' User_Model ') et le deuxième avec $ this- > load- > model (' Use_Model ',' Second_User_Model ') aidera. Vous pouvez également cloner l'objet comme $ this- > second_user_model = clone $ this- > user_model .