Pouvez-vous accéder à un modèle à partir de l'intérieur d'un autre modèle dans CodeIgniter?
-
09-06-2019 - |
Question
Je suis en train d'écrire une application web à l'aide de CodeIgniter qui nécessite une authentification.J'ai créé un modèle qui s'occupe de tous mes d'authentification.Cependant, je ne peux pas trouver un moyen d'accéder à ce modèle d'authentification à partir de l'intérieur d'un autre modèle.Est-il un moyen d'accéder à un modèle à partir de l'intérieur d'un autre mode, ou une meilleure façon de gérer l'authentification à l'intérieur de CodeIgniter?
La solution
En général, vous ne voulez pas de créer des objets à l'intérieur d'un objet.C'est une mauvaise habitude, au lieu de cela, écrire un clair de l'API et de l'injecter un modèle dans votre modèle.
<?php
// in your controller
$model1 = new Model1();
$model2 = new Model2();
$model2->setWhatever($model1);
?>
Autres conseils
Il semble que vous pouvez charger des modèles à l'intérieur de modèles, bien que vous devriez probablement résoudre ce une autre façon.Voir CodeIgniter forums pour une discussion.
class SomeModel extends Model
{
function doSomething($foo)
{
$CI =& get_instance();
$CI->load->model('SomeOtherModel','NiceName',true);
// use $CI instead of $this to query the other models
$CI->NiceName->doSomethingElse();
}
}
Aussi, je ne comprends pas ce Jusqu'a dit à propos de ce que vous ne devriez pas créer des objets à l'intérieur des objets.Bien sûr, vous devriez!L'envoi d'objets comme arguments semble beaucoup moins clair pour moi.
Ne pas gérer l'authentification dans votre modèle.Utilisez uniquement des modèles à interface avec votre base de données, ou ldap ou quoi que ce soit.
J'ai créé un Auth bibliothèque que j'utilise pour gérer l'authentification et l'autorisation.Vous pouvez accéder à une bibliothèque comme ce à partir de vos contrôleurs.
Chargement d'un modèle au sein d'un modèle est maintenant possible avec la nouvelle CodeIgniter.