Rolf B: Geltungsbereich Variable in Funktion

Beitrag lesen

Hallo,

Übergib das Verbindungsobjekt $mydb als Parameter in die Funktionen

Kann man machen, ist aber extrem lästig.

Man kann für solche zentralen Singletons durchaus auch global verwenden.

Es gibt nach meiner Meinung 4 Ansätze für SQL in Programmen:

  • Scattered SQL (der klassische "ich mach mal eben" Ansatz) - hier kommt man ohne eine globale Variable für die SQL-Connection kaum aus.
  • SQL Zugriffsfunktionen: Alle SQL Zugriffe sind in Funktionen gekapselt, und die liegen in einem Include. Damit hat man eine bessere Chance, gleiche Queries zu erkennen und wiederzuverwenden. In diesen Funktionen wird das DB-Zugriffsobjekt als global angegeben.
  • SQL-Access Klasse(n): Die Zugriffsfunktionen sind als Methoden in einer oder mehreren Klassen angeordnet. Die Objekte dieser Klassen erzeugt man nicht selbst, sondern über eine Factory. Die Factory kennt das DB-Objekt und steckt es in die Access-Klassen hinein. Also auch was globales, aber nicht einfach als Variable, sondern als ein Service. In deiner Config-Datei kannst Du das DB-Objekt erzeugen und in die Factory hineinstecken. Oder die Factory erzeugt das DB-Objekt beim ersten SQL Zugriff im Hintergrund.
  • Ein ORM Framework. Aber das schmeißt Dir alles über den Haufen.

Rolf

--
sumpsi - posui - clusi