Benjamin Wilfing: Globale dynamische Variablen

Beitrag lesen

Hallo,

ich stehe mal wieder vor einem Problem: Ich schreibe eine Funktion, die eine Überschrift und einen Text zu einem beliebigen HTTP-Fehler ausgibt.
In einer externen Configdatei, die includet wird, gibt es für jeden HTTP-Errorcode 2 Variablen, die vom Namen her gleich aufgebaut sind:

$http_[code]_title = "";  // Überschrift für Meldung
  $http_[code]_msg = "";    // Text der Meldung

Diese will ich dann über die Funktion sendHttpErrorMsg($errno) ausgeben lassen. Damit ich keine switch-Anweisung wegen der vielen möglichen HTTP-Errorcodes basteln muß, löse ich das Problem über dynamische Variablen (Funktion vereinfacht dargestellt).

function sendHttpErrorMsg($errno) {
    echo "<h1>".${"http_".$errno."_title"}."</h1>";
    echo "<p>".${"http_".$errno."_msg"}."</p>";
  }

Da ich hier nun die Variablen aus der Configdatei innerhalb einer Funktion benutze, muß ich sie "globalisieren". Da müßte ich aber nun wieder alle HTTP-Codes einzeln global verfügbar machen. Daher dachte ich an so etwas wie

function sendHttpErrorMsg($errno) {
    global ${"http_".$errno."_title"};
    global ${"http_".$errno."_msg"};
  ...
  }

, damit die Funktion für jede Zahl verwendbar ist. Das funktioniert aber leider nicht, da bekomme ich einen Parse Error:

Parse error: parse error, expecting STRING' or '$'' in functions.inc on line 56

Sobald ich aber die Variablen direkt bennene (z.B. global $http_401_title;), funktioniert es.

Was mache ich in der global-Anweisung falsch ? Darf man keine dynamischen Variablen globalisieren ?

Danke und

Viele Grüße aus Darmstadt,
Benjamin