Sven Rautenberg: Klassen-Variablen in externen Funktionen

Beitrag lesen

Moin!

Ich habe eine Klasse geschrieben die mit einer MySQL Datenbank kommuniziert. Nun habe ich eine Variable erstellt (die als Variable der Klasse erzeugt wird) die definiert ist als Präfix und dann den Variablenamen: ($db->user = $table_prefix . 'users'). Das funktioniert soweit auch ganz gut, wenn die Variable nicht in einer anderen Funktion (ich meine nicht einer Methode der Klasse) abgerufen wird.
Wie kann ich $db->user trotzdem in der Funktion gebrauchen?

Du solltest:
1. Deine Datenbankklasse als Singleton realisieren.
2. Dann eine Klasse zur Userauthentifizierung schreiben.
3. Dieser Authentifizierungsklasse dann eine Singleton-Instanz deiner Datenbankklasse beim Erstellen übergeben.
4. Auf das Erstellen von klassenlosen Funktionen eher verzichten.
5. Auf den globalen Zugriff auf Klasseneigenschaften ebenfalls verzichten.

Auf diese Weise kannst du überall, wo Benutzerauthentifizierung gewünscht ist, einfach die Authentifizierungsklasse instanziieren, ihr das DB-Singleton übergeben (durch die Implementierung als Singleton hast du global nur eine Instanz dieser Klasse und nur eine DB-Verbindung, auch wenn du anderswo schon DB-Zugriff machst), und Benutzernamen und Passwort zur Authentifizierung übergeben.

- Sven Rautenberg

--
"Love your nation - respect the others."