dedlfix: MySQL Loginsystem

Beitrag lesen

Hi!

Mir fällt gerade auf, dass tatsächlich die Variablen des Namespaces im globalen Geltungsbereich liegen.

Sagen wir so: Variablen sind generell global, wenn sie nicht in Funktionen erzeugt werden.

Das widerspricht meinem Verständnis von Namensräumen.

Es gibt ja keine Gesetze, wie etwas zu implementieren ist, und so kann PHP eben definieren, dass es Variablen vom Namensraum-Handling ausnimmt. Es wird dafür möglicherweise Gründe gegen, aber andererseits gibt es - wenn sowieso schon Bedarf nach Namensräumen besteht - bessere Möglichkeiten als globale Variablen.

Wäre denn eine Singleton-Klasse (was es nicht alles gibt!) eine Alternative? Mein Wunsch wäre nämlich, dass die Variablen meines Systems nicht den globalen Namensraum "verschmutzen".

Es gibt das Entwurfsmuster Singleton. Eine spezielle Klasse dazu gibt es nicht. Man kann dieses Muster nämlich auch mit einer einfachen Funktion realsieren.

Es kommt darauf an, was du insgesamt und jeweils speziell vorhast. Du solltest zuerst einmal alle Möglichkeiten der OOP ausschöpfen, bevor du Namensräume als Lösung für dein Projektstrukturierproblem ansiehst. Klassenvariablen (static properties) können eine Lösung sein, wobei ich nicht dafür plädiere, eine Klasse als Auffangbecken für die ansonsten global angelegte Variablen zu missbrauchen. Pattern - von denen es weit mehr als nur Singleton und Factory gibt - wären auch eine überlegenswerte Möglichkeit. Spontan fällt mir da das Muster Repository ein, das quasi ein besseres Array zum Ablegen von Objektinstanzen ist. Was letztlich sinnvoll ist, muss für jeden Einzelfall entschieden werden.

Lo!