dedlfix: Zugreifen auf eine Instanzvariable aus einer Funktion

Beitrag lesen

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);