Kapitel 13. Konstanten
Eine Konstante ist ein Bezeichner (Name) für eine einfache Variable. Wie der
Name bereits nahelegt, kann der Wert einer Konstanten zur Laufzeit des
Skripts nicht verändert werden (ausgenommen die Magischen Konstanten, die aber
keine wirklichen Konstanten sind.) Eine Konstante unterscheidet standardmäßig
zwischen Groß- und Kleinschreinbung (case-sensitive). Nach gängiger
Konvention werden Konstanten immer in Großbuchstaben geschrieben.
Der Name einer Konstanten folgt den gleichen Regeln wie alle anderen
Bezeichner in PHP. Ein gültiger Name beginnt mit einem Buchstaben oder einem
Unterstrich, gefolgt von beliebig vielen Buchstaben, Ziffern oder
Understrichen. Als regulärer Ausdruck könnte das so beschrieben werden:
[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*
Tipp: You may also want to take a
look at the Anhang R.
Beispiel 13-1. Gültige und ungültige Namen für Konstanten |
<?php
// Gueltige Namen fuer Konstanten
define("FOO", "irgendwas");
define("FOO2", "etwas anderes");
define("FOO_BAR", "irgendwas ganz anderes");
// Ungueltige Namen fuer Konstanten
define("2FOO", "irgendwas");
// Folgendes ist korrekt, sollte aber vermieden werden:
// PHP koennte eines Tages eine Magische Konstante unterstuetzen
// die Ihr Skript nicht mehr wie gewuenscht funktionieren laesst
define("__FOO__", "irgendwas");
?>
|
|
Anmerkung:
Für unsere Zwecke ist ein Buchstabe a-z, A-Z und die ASCII-Zeichen
von 127 bis 255 (0x7f-0xff).
Wie bei superglobals ist der Gültigkeitsbereich einer Konstanten
global. Unabhängig vom Gültigkeitsbereich können Sie in Ihrem Skript überall
auf eine Konstante zugreifen. Für mehr Information zum Gültigkeitsbereich
lesen Sie bitte den Abschnitt über den Geltungsbereich von Variablen.
Eine Konstante können Sie über die Funktion define()
definieren. Einmal definiert, kann eine Konstane weder verändert
noch gelöscht werden.
Konstanten können nur skalare Daten (boolean,
integer, float und string) enthalten.
Definieren Sie keine Konstanten vom Typ resource.
Den Wert einer Konstanten erhalten Sie durch die einfache Angabe ihres
Namens. Im Gegensatz zu Variablen sollten Sie einer Konstanten
kein $ voranstellen.
Ebenso können Sie die Funktion constant() benutzen, um
den Wert einer Konstanten auszulesen, wenn Sie den Namen der Konstanten
dynamisch erhalten wollen.
Benutzen Sie get_defined_constants(), um eine Liste
aller definierten Konstanten zu erhalten.
Anmerkung:
Konstanten und (globale) Variablen befinden sich in unterschiedlichen
Namensräumen. Das hat zum Beispiel zur Folge, dass TRUE und
$TRUE etwas völlig Verschiedenes sind.
Falls Sie eine undefinierte Konstante verwenden, nimmt PHP an, dass
Sie den Namen der Konstanten selbst meinen, so als ob Sie sie als einen
string (CONSTANT vs "CONSTANT") aufgerufen hätten. Falls das
passiert, wird Ihnen ein Fehler vom Typ E_NOTICE ausgegeben. Lesen Sie ebenfalls
den entsprechenden Manualabschnitt, der erklärt, warum $foo[bar] falsch ist
(zumindest solange Sie nicht zuvor bar mittels
define() als Konstante definiert haben). Möchten Sie
einfach nur nachprüfen, ob eine Konstante definiert ist, benutzen Sie die
Funktion defined().
Das hier sind die Unterschiede zwischen Konstanten und Variablen:
Konstanten haben kein Dollarzeichen ($) vorangestellt;
Konstanten können nur über die Funktion define()
definiert werden, nicht durch einfache Zuweisung;
Konstanten können überall definiert werden, und auf Ihren Wert können Sie
ohne Rücksicht auf Namensraumregeln von Variablen zugreifen;
Sobald Konstanten definiert sind, können sie nicht neu definiert
oder gelöscht werden; und
Konstanten können nur skalare Werte haben.
Beispiel 13-2. Definiton von Konstanten |
<?php
define("KONSTANTE", "Hallo Welt.");
echo KONSTANTE; // Ausgabe: "Hallo Welt."
echo Konstante; // Ausgabe: "Konstante" und eine Notice.
?>
|
|
Lesen Sie ebenfalls den Abschnitt über Klassenkonstanten.