DB Factory

dg87

Erfahrenes Mitglied
Moin,

ich starte gerade eben mein eigenes Projekt und möchte mir als erstes eine DB Factory bauen.
Diese erstellt mir eine Datenbankinstanz in einer statischen Variable.
Wenn ich jetzt von der Datei a.php die DB mittels Factory bauen lasse, kann ich ja dann auch von datei b.php drauf zugreifen oder, weil sie ja statisch ist?
Oder muss ich bei Datei b.php auch wieder die Factory aufrufen?

Ist ne Verständnis Frage :-)

Schönes WE
 
Danke ich weiß was Namespaces sind, das hat aber überhaupt nichts mit meiner Frage zu tun.
Ich will eigentlich nur wissen, wenn eine Instanz der DB erzeugt wurde, diese auch in anderen Dateien verfügbar ist.
Ich will ja nicht Pro php Datei eine neue DB Instanz (wir lassen jetzt mal das singleton außen vor).
Und includen will ich auch vermeiden, da ich mit autloader arbeite.

Also bitte beim Thema bleiben, eine Statitische Instanz $db wird ja dann von überall erreichbar sein oder?
 
Hi,

das kommt ganz darauf an, wie genau du das implementiert hast. Wenn deine DB Factory per Autoloader geladen werden kann, kannst du auch von b.php darauf zugreifen.

Best regards

PS: Was ist eine statische Instanz? :o
 
Zuletzt bearbeitet:
Statische Instanzen sind sicherlich Singelton. Sprich Klassen von denen es nur eine Instanz geben kann.

Du willst quasi eine "globale" Variable die du in jeder Klasse einfach verwenden kannst? Das geht nur bedingt mit Sessions, soweit ich weiß.
Der Ansatz ist allerdings nicht ganz sauber, solltest du einmal eine die Variable umbenennen wollen, dann kracht das ganze. Sicher ist es auch nicht, du kannst ja quasi den Wert von jeder Stelle aus beliebig ändern. Gerade bei Datenbankanbindung ein heikles Thema. Außerdem sind Sessions für sowas nicht gemacht.

Besser wäre der Ansatz mit Namespaces und dann dort auf ein Interface zugreifen das einem dann die Instanz ausliefert. Und zwar nur ausliefert. Dann kannst du von außen darauf zugreifen und dir die Instanz holen.
Das wäre jedenfalls mein Ansatz.

Wenns anders geht und sicher ist, dann würde mich das auch interessieren.
 
Ah ok klar danke.
Ähm ja ich meinte eine statische Variable meiner Instanz :-)

Jetzt noch eine abschließende Frage. Wie lang lebt diese Statische Variable?
Wenn der Anwnder den Browser schließt, oder wenn er die Appl verlässt?
Ich hab halt da noch Probleme deswegen frag ich.

Wen nich also mit der Factory die DB Instanz in die statische Variable erzeuge, kann ich später von jeder anderen Datei aus darauf zugreifen, aber nur wenn sie per inlcude oder autoloader geladen wird, right?

Edit:
Zum Thema anders machen. Ich mach das jetzt so zur Übung. Meine Factory liefert auch nur die Instanz und sonst nichts anderes - und das ist jetzt auch nicht das Thema.
Vielen Dank für den Tipp aber :)
 
Zuletzt bearbeitet:
Die letzte Frage beantwortend: ja. Das Script, in dem die Variable gesetzt wurde muss im aktuellen Request ausgeführt worden sein. Das beantwortet auch die Laufzeitfrage: ohne Zutun (z.B. mittels Cache oder ähnliches) lebt die Variable solange wie der Aufruf der Seite.
 
Zurück