3 Stimmen

Objektorientierte Schemata für Codeigniter

Ich möchte mich in diesem Punkt klar ausdrücken. Ich bin mit Codeigniter.

Was/welche ist die bessere/richtige/standardmäßige/geschätzte Art des OOP-Designs in Codeigniter bei der Erstellung von Webanwendungen?

Im Allgemeinen,

I. Erstellen Sie eine benutzerdefinierte Klasse wie User und haben eine Login-Funktion? Wie,

     class User{ 
            var $db, $id, $username, $password, $role; //have all user attributes here

            function __construct() {
               //instance for accessing the database
               $this->db =& get_instance();
            }

            public function login(){
                //do the login here
                $this->db->load->model('user_model');   
                $success = $this->db->user_model->login($this->username, $this->password);      
                //isn't this redundant using models? or should I rename the model function name like checkLogin?
                return $success;
            }

            //other class functions 
        }

OR

II. Direktes Aufrufen einer Anmeldefunktion im Modell vom Controller aus, ohne ein Benutzerobjekt zu erstellen?

O_o

In Schema 1 mache ich das Modell zu einer Abfrage NUR in der Datenbank. Ich kann auch das Objekt "User" vererben wie bei "Client" und "Admin" und spezifische Funktionen für jedes Objekt hinzufügen. Ich habe den Vorteil, dass der CI-Controller sich auf das Layout und die Übergabe von Variablen an die Ansicht konzentrieren kann, was in erster Linie sein Zweck ist (ich bin mir nicht ganz sicher), und dass meine benutzerdefinierten Klassen/Objekte die Operationen in meiner Web-App übernehmen können. BUT Ich fühle eine Redundanz in meiner Login-Funktion, wo ich eine andere Login-Funktion im Modell aufgerufen habe. Ist das gut?

Während in Schema 2, ist es richtig, lassen Sie meine Controller alle Operationen wie Login, registrieren, oder erstellen Sie ein Protokoll UND Empfangen von Input-Posts und Übergabe von Variablen an die Ansicht behandeln?

Ich brauche wirklich einen Leitfaden. Meine OO Fähigkeiten müssen wachsen.

Ich danke Ihnen vielmals!

2voto

Leron Punkte 9334

Erstens denke ich, dass es für Sie nützlich wäre, diesen Artikel zu lesen:

Zugriffskontrollliste

Ich arbeite gerade an einem Projekt, das CodeIgniter verwendet, und der Ansatz, den wir hier verwenden, ist vielleicht auch für Sie geeignet. Wenn Sie die Berechtigung überprüfen müssen, ist der beste Ort dafür der Konstruktor der Klasse mit dem Aufruf einer Login-Funktion, wenn der Benutzer noch nicht registriert ist. Wenn Sie also Klassen haben, in denen einige Funktionen nur registrierten Benutzern zur Verfügung stehen sollen, dann sollten Sie die Prüfung innerhalb der Funktion durchführen.

1voto

greenLizard Punkte 2286

Wenn Sie wirklich ein strenges OO-Modell verfolgen wollen, sollten Sie DataMapper verwenden. Viele werden sagen, dass dies die Anwendung verlangsamen wird, aber das ist der Preis, den man für vollständige OO zahlt. Was Sie tun können, ist eine User-Klasse zu erstellen, die die gesamte Datenmanipulation übernimmt und die Anmeldung in eine Auth-Bibliothek zu verschieben, die mit Ihrem User-Modell arbeiten würde. Und denken Sie daran, Modelle arbeiten mit / tun Datenmanipulation Controller speichern die Geschäftslogik.ich bin auch lernen und hoffen, dass dieser Beitrag hilft Ihnen.

0voto

Rajan Punkte 196

Es ist immer eine gute Idee, ein Objekt zu erstellen und das Modul im Konstruktor zu laden, wenn dieses Modell öfters verwendet wird.

Aber ich empfehle Ihnen nicht, die $this->db =& get_instance(); im Konstruktor. Dieser sollte bereits automatisch geladen worden sein.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X