Moin!
was ist dieses Datenbank-Singleton-Object habe es schon öfters gehört aber was ist das?
Wenn du objektorientiert programmierst, dann kommst du dann und wann in die Situation, dass du eine Klasse zwar als Objekt instanziieren mußt, aber egal wo in deinem Programm - es darf jeweils nur ein einziges, einmaliges Objekt geben. Jeder weitere Versuch darf nur wieder das bereits einmal erzeugte Objekt zurückgeben.
Weil das Problem häufiger auftritt, haben sich Menschen dafür irgendwann mal a) einen Namen (Singleton-Pattern) und praktischerweise b) auch noch direkt Methoden ausgedacht, wie man das realisieren kann. "Pattern" heißt nämlich "Muster", und z.B. für das Singleton-Pattern sind deshalb in vielen verschiedenen Programmiersprachen diverse Umsetzungen dieses Musters im Netz recherchierbar. Von denen muß man sich dann nur noch eine aussuchen, die einem gefällt, und kann dann recht sicher sein, dass diese Beispielumsetzung funktioniert und das Problem löst (sofern man keine Fehler einbaut).
Ich ache halt ganz normal eine mysql-Verbinfdung wähle die Datenbank ud mach deann meine selcts und co..
aber was ist das Singleton object?
In meinem Projekt habe ich exakt EINE Datenbankverbindung zu meiner einzigen Datenbank. Deshalb habe ich das Singleton-Pattern gewählt, um überall immer nur eine einzige Datenbankconnection aufzubauen, auch wenn ich evtl. mehrere Datenbankobjekte instanziieren sollte.
Du kannst sowas aber auch vollkommen ohne Singleton-Pattern machen - einfach eine Klasse definieren, die Methoden zum DB-Connect (z.B. im Konstruktor realisiert) und für diverse Operationen (Query, Escape, Fehlerabfrage, ggf. Logging) bereithält.
Meine DB-Klasse macht beispielsweise eigentlich ziemlich wenig. Wenn man es genau nimmt, gibt es für alles, was es als benutzen mysql_whatever()-Befehl gibt, eine passende, nahezu identisch arbeitende Methode (bis auf den Query - der liefert gleich das gesamte Array der Abfrage zurück, nicht nur einen Datensatz). Das realisiere ich so, weil ich dann dieses Objekt viel besser in meinen Unit-Tests anderer Klassen simulieren kann (also ohne echte Datenbank so tun, als hätte ich eine Datenbank mit definierten Daten).
- Sven Rautenberg
"Love your nation - respect the others."