Pouvez-vous accéder à un modèle à partir de l'intérieur d'un autre modèle dans CodeIgniter?

StackOverflow https://stackoverflow.com/questions/46338

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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top