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