Websiteentwicklung: PHP: Konstanten

Aus Wikibooks

In PHP bezeichnet man Konstanten als solche Ausdrücke, die im Gegensatz zu Variablen ihren Wert nicht ändern können. Konstanten definiert man beispielsweise für globale Einstellungen oder um Parameterwerte einen besseren merkbaren Ausdruck zu geben. Für die allgemeine Übersichtlichkeit schreibt man Konstanten immer groß!

Konstanten werden in PHP mit der Funktion define definiert. Der erste Parameter ist der Name der neuen Konstante und der zweite Parameter ist der Wert dieser Konstante.

<?php
define('MYSQL_HOST', 'localhost');
echo MYSQL_HOST; // gibt "localhost" aus.
?>

Diese Konstanten sind gegenüber Variablen überall im Script vorhanden. Somit kann man ohne Problem auch innerhalb von Funktionen und anderen Blöcken auf Konstanten zugreifen.

Ein Beispiel für die Benutzung der Konstanten ist die error_reporting-Funktion. Laut der Funktionsbeschreibung muss man dieser Funktion eine Zahl übergeben um das Error-Log-Level einzustellen. Da es aber mehr als 10 Werte von error_reporting gibt, die auch noch beliebig kombiniert werden können, ist es fast unmöglich sich die Zahlen der Kombinationen zu merken. Hier kommen nun die Konstanten in Spiel. In PHP gibt es nun Konstanten der Form E_*, beispielsweise E_ERROR oder E_USER_NOTICE. Es ist möglich die Funktion wie folgt aufzurufen.

<?php
error_reporting(1 | 4 | 512);
?>

Mit den Konstanten kann man diese Funktion auch wie folgt aufrufen:

<?php
error_reporting(E_ERROR | E_PARSE | E_USER_WARNING);
?>

Anhand der Konstanten kann man erkennen, was die Funktion eigentlich machen soll. In diesem Fall das Error-Log-Level so einstellen, das nur Error, Parse-Error und Benutzer-Warnungen angezeigt werden. So kann jeder Programmierer erkennen, was die Funktion macht bzw. mit welchen Parameter diese Funktion aufgerufen wird.


Wenn man überprüfen möchte, ob eine Konstante vorhanden ist, nutzt man defined.

<?php
if (defined('KONSTANTE'))
 echo 'debug';
?>

Die Funktion wird häufig verwendet um Entwickler-Code zu verstecken (wenn sich ein Programmierer einloggt, wird die Konstante gesetzt, ansonsten nicht um dann ggf. Debug-Information auszugeben).