Singleton Muster für Datenbank Klasse - Nachteile?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Singleton Muster für Datenbank Klasse - Nachteile?

    Hallo,

    ich möchte für meinen Shop das Singleton Muster für meine Datenbankverbindung nutzen, um die Verbindung in anderen Klassen verfügbar zu machen.
    Meine erste Frage ist, ob es Nachteile bei der Nutzung für die DB Klasse gibt, oder sogar eine bessere Lösung?
    Zweitens: Gehe ich richtig der Annahme das jeder Surfer trotzdem seine eigene Verbindung bekommt?
    Drittens: Wie lange lebt das Objekt und wie zerstöre ich es gezielt. Ich denke für jeden Seitenaufbau muss das Objekt neu instanziert werden, richtig? Sollten man dann nach jedem Seitenaufbau das Objekt zerstören?

    Ah ja, noch wichtig 1:
    Ist es elegant z.B. in der Artikel Klasse viele Methoden zu haben, die eine Datenbank Verbindung benötigen, wie z.B. ob ein Artikel existiert, einen Artikel einfügen, Umbenennen, etc alles in Verbund mit Querys oder sollte man das Objekt komplett abholen, drauf arbeiten und später wieder serialisieren(so heißt es glaube ich).

    Ah ja, noch wichtig 2:
    Wo validiert ihr die $_GET und $_POST Variablen? Direkt am Anfang der Empfängerseite oder in den einzelnen Methoden? Wenn ich frage ob ein Artikel existiert erwartet die exists() Methode der Artikel Klasse einen Integer, aber prüft diesen nicht, sondern erwartet das er vorher bereits validiert wurde.

    Danke
    Zuletzt geändert von Turbo; 27.11.2006, 20:30.

  • #2
    Re: Singleton Muster für Datenbank Klasse - Nachteile?

    Original geschrieben von Turbo
    Meine erste Frage ist, ob es Nachteile bei der Nutzung für die DB Klasse gibt, oder sogar eine bessere Lösung?
    Wüsst nicht

    Zweitens: Gehe ich richtig der Annahme das jeder Surfer trotzdem seine eigene Verbindung bekommt?
    Ja, die Art Verbindung bleibt gleich, nur die Schnittstelle zum Code ändert sich

    Drittens: Wie lange lebt das Objekt und wie zerstöre ich es gezielt. Ich denke für jeden Seitenaufbau muss das Objekt neu instanziert werden, richtig? Sollten man dann nach jedem Seitenaufbau das Objekt zerstören?
    Wenn du es als Singleton implementierst, wird es theo. bis zum Ende des Skriptes leben, außer du implementierst eine separate "SingletonKill"-Methode, welche das Objekt aus der statischen Variable radiert

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar


    • #3
      Re: Singleton Muster für Datenbank Klasse - Nachteile?

      Original geschrieben von Turbo
      Meine erste Frage ist, ob es Nachteile bei der Nutzung für die DB Klasse gibt, oder sogar eine bessere Lösung?
      Eher nicht.

      Zweitens: Gehe ich richtig der Annahme das jeder Surfer trotzdem seine eigene Verbindung bekommt?
      Ja, bei jedem request wird eine instanz deines skriptes ausgeführt,
      dort wird dann ein ein frisches objekt erzeugt, dass innerhalb des
      programablaufes einzigartig bleibt.

      Drittens: Wie lange lebt das Objekt und wie zerstöre ich es gezielt. Ich denke für jeden Seitenaufbau muss das Objekt neu instanziert werden, richtig?
      Wenn du es nicht vorher explizit für den gc frei gibst wird es wie alle
      anderen objekte nach ablauf des programmes zerstört.

      Sollten man dann nach jedem Seitenaufbau das Objekt zerstören?
      Nein.


      Ist es elegant z.B. in der Artikel Klasse viele Methoden zu haben, die eine Datenbank Verbindung benötigen, wie z.B. ob ein Artikel existiert, einen Artikel einfügen, Umbenennen, etc alles in Verbund mit Querys oder sollte man das Objekt komplett abholen, drauf arbeiten und später wieder serialisieren(so heißt es glaube ich).
      Es ist nie elegant viele oder große methoden in einer klasse zu haben.
      Das interface sollte so klein wie möglich und so groß wie nötig sein.
      Bei vielen daten ist es definitiv performanter der db die arbeit zu überlassen.
      Wenn du die daten erst holst und in einem/mehreren php-typen speicherst
      umgehst du zugriffsoptimierungen die das rdbms bietet zb. indezies.

      Wo validiert ihr die $_GET und $_POST Variablen? Direkt am Anfang der Empfängerseite oder in den einzelnen Methoden? Wenn ich frage ob ein Artikel existiert erwartet die exists() Methode der Artikel Klasse einen Integer, aber prüft diesen nicht, sondern erwartet das er vorher bereits validiert wurde.
      Da scheiden sich die geister. Ich bin der meinung dass das model validieren
      sollte was für das model von bedeutung ist. Nur das model weiss in welcher
      form es daten braucht und wie diese verarbeitet werden. Würde eine
      andere schicht darüber bescheit wissen müssen, hättest du etwas das man
      bad coupling nennt.

      greets
      (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

      Kommentar

      Lädt...
      X