1. Konstanten
Konstanten können wie Variablen Werte enthalten, die aber
nicht mehr geändert werden können (daher auch der Name). Des Weiteren können
Konstanten nicht jeden Typ von Wert enthalten wie es bei Variablen möglich ist.
So können Konstanten nur Skalare Werte
sowie den speziellen Datentyp NULL
enthalten. Im Gegensatz zu Variablen
sind Konstanten jedoch im ganzen Skript verfügbar. Dies schließt auch
Funktionsrümpfe mit ein obwohl eine Konstante nicht dort definiert wurde. Konstanten
werden z.B. häufig für Einstellungen gesetzt, aber auch für
spezielle Parameterwerte für Funktionen wie z.B. bei error_reporting.
2. Definieren und Auslesen von Konstanten
Konstanten werden in PHP mit der Funktion define erzeugt. Der erste Parameter ist dabei der Name der neuen Konstante, der zweite Parameter der Wert für diese Konstante.
<?php
define('SITE_NAME', 'Meine Tolle Homepage');
?>
Konstanten unterliegen den selben Namenskriterien wie Variablen (abgesehen vom
fehlenden Dollarzeichen $
). Sie können somit auch nicht mit Ziffern
anfangen. Konstanten werden zusätzlich üblicherweise komplett in Großbuchstaben
geschrieben.
Um auf eine Konstante zuzugreifen wird einfach der Name der Konstante verwendet.
<?php
echo SITE_NAME;
// oder auch
echo 'Willkommen auf '.SITE_NAME.'!';
// jedoch nicht
echo 'Willkommen auf SITE_NAME!'; // wird die Konstante nicht finden
?>
3. Verwendung von Konstanten
Konstanten werden in PHP für die bereitgestellten Funktionen als Parameter benutzt die eigentlich eine Zahl erwarten oder als Rückgabewerte verwendet die eigentlich nur Zahlen sind, jedoch sich niemand diese Zahlen merken kann oder will. Diese Konstanten die in PHP vordefiniert sind haben dann verständliche Namen, die dann verwendet werden können. So liefert die Funktion getimagesize einige Informationen über ein Bild zurück. Dazu gehört der Typ des Bildes (PNG, JPEG, GIF, etc.). Diese Information ist in einer Zahl kodiert. So steht z.B. 1 für GIF und 4 für PNG. Um nun den Typ eines Bildes zu prüfen könnten man den Typ gegen diese Zahlen vergleichen.
<?php
if (1 == $bildtyp) {
} else if (4 == $bildtyp) {
}
?>
Damit man nicht immer im Handbuch nachgucken muss was 1
oder
4
bedeutet kann man (und sollte auch) die vordefinierten Konstanten verwenden.
<?php
if (IMAGETYPE_GIF == $bildtyp) {
} else if (IMAGETYPE_PNG == $bildtyp) {
}
?>
Somit ist für jeden klar was die If-Abfrage überprüft und wann diese ausgeführt wird. Diese Idee wird auch bei Parametern verwenden. Als Beispiel dient hier die error_reporting Funktion, die eine Zahl erwartet. Diese Zahl wird in ihre Bits zerlegt und Anhand dieser Zerlegung entscheidet diese Funktion welche Fehlermeldungen angezeigt werden sollen und welche nicht. Ein gültiger Funktionsaufruf wäre der folgende:
<?php
error_reporting(8191);
?>
Da jedoch niemand weiß was diese Zahl nun bedeutet verwendet man vordefinierte
Konstanten, in diesem Fall die E_*
Konstanten. Für den
Entwickler ist es nun klarer welchen Wert der Parameter ist bzw. sein soll.
<?php
error_reporting(E_ALL | E_STRICT);
?>
Des Weiteren können sich die Werte der Funktionen ändern. So ist z.B. der
Wert E_ALL in der PHP Version 5.2.x 6143
, davor jedoch
2047
. Somit würde der gleiche Code bei unterschiedlichen
PHP-Version vielleicht anders ablaufen. Bei der Verwendung von diesen
Konstanten wird automatisch der richtige Wert genommen/errechnet, der
für diese PHP-Version grad gültig ist, da die grad laufende PHP-Version
selbst weiß welcher Konstante welchen Wert hat.