Nun erstelle in meiner Indexseite ein Objekt dieser Klasse.
Gibt es eine Möglichkeit, das ich auch aus z.B. dieser Datenbankfunktion Zugriff auf die Instanz habe?
Du hast das Problem mit dem Geltungsbereich von Variablen nicht beachtet.
Es gibt da auch noch Möglichkeiten, das Problem eleganter zu lösen.
Du hast dann keine Variablen rumliegen und verwendest stattdessen statische Methodenaufrufe, ohne auf die Geltungsbereiche von Variablen Rücksicht nehmen zu müssen.
Dokumentationsverweise:
Die Verwendung von statischen Variablen
Referenzen in PHP
Klassen und Objekte - Kapitel '::'
class Error {
// Hilfsmethode, gibt eine Referenz auf die statische Variable $errors zurück
function &_getErrors() {
static $errors = array();
return $errors;
} //Error::_getErrors
// Fügt eine neue Fehlermeldung hinzu
function Raise($errorMessage) {
$errors =& Error::_getErrors();
$errors[] = $errorMessage;
} //Error::Raise
// gibt alle Meldungen zurück und löscht diese ggf.
function GetAllMessages($glue = "<br/>\n", $clear = true) {
$errors =& Error::_getErrors();
$result = implode($glue, $errors);
if ($clear)
$errors = array();
return $result;
} //Error::GetAllMessages
} //class Error
language.variables.scope.static
Das Ganze kann nun so verwendet werden:
Ein neuer Fehler wird angefügt:
if ($fehlerbedingungErfüllt)
Error::Raise('fehlermeldungstext');
Alle Fehlermeldungen werden getrennt mit <br /> zurückgegeben und der Fehlerspeicher gelöscht:
echo Error::GetAllMessages();
Alle Fehlermeldungen werden getrennt mit Leerzeichen zurückgegeben und der Fehlerspeicher wird nicht gelöscht:
echo Error::GetAllMessages(' ', false);