Frage

Ich schreibe eine Webanwendung mit CodeIgniter, die eine Authentifizierung erfordert.Ich habe ein Modell erstellt, das meine gesamte Authentifizierung übernimmt.Ich kann jedoch keine Möglichkeit finden, von einem anderen Modell aus auf dieses Authentifizierungsmodell zuzugreifen.Gibt es eine Möglichkeit, aus einem anderen Modus auf ein Modell zuzugreifen, oder eine bessere Möglichkeit, die Authentifizierung innerhalb von CodeIgniter zu handhaben?

War es hilfreich?

Lösung

Im Allgemeinen möchten Sie keine Objekte innerhalb eines Objekts erstellen.Das ist eine schlechte Angewohnheit. Schreiben Sie stattdessen eine klare API und fügen Sie ein Modell in Ihr Modell ein.

<?php
// in your controller
$model1 = new Model1();
$model2 = new Model2();
$model2->setWhatever($model1);
?>

Andere Tipps

Es scheint, dass Sie Modelle in Modelle laden können, obwohl Sie dies wahrscheinlich anders lösen sollten.Sehen CodeIgniter-Foren für eine Diskussion.

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();
  }
}

Außerdem verstehe ich nicht, was Till darüber sagt, dass man keine Objekte innerhalb von Objekten erstellen sollte.Natürlich solltest du!Das Senden von Objekten als Argumente erscheint mir viel weniger klar.

Behandeln Sie die Authentifizierung in Ihrem Modell nicht.Verwenden Sie Modelle nur als Schnittstelle zu Ihrer Datenbank, LDAP oder was auch immer.

Ich habe eine Auth-Bibliothek erstellt, die ich zum Verwalten der Authentifizierung und Autorisierung verwende.Sie können von Ihren Controllern aus auf eine solche Bibliothek zugreifen.

Das Laden eines Modells innerhalb eines Modells ist jetzt mit dem neuen CodeIgniter möglich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top