PHP/Konstanten

Aus Mikiwiki
< PHP
Version vom 21. Januar 2009, 23:55 Uhr von Michi (Diskussion | Beiträge) (Die Seite wurde neu angelegt: Konstanten sind Speicherplätze, deren Inhalte nach der ersten Zuweisung nicht mehr verändert werden können. Sie sind in allen Programmier- und Skriptsprachen nützli...)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Konstanten sind Speicherplätze, deren Inhalte nach der ersten Zuweisung nicht mehr verändert werden können. Sie sind in allen Programmier- und Skriptsprachen nützlich, um feste, immer wieder benötigte Werte mit verständlichen Begriffen zu umschreiben. Ihr Einsatz erhöht die Lesbarkeit der Programme und erleichtert die Durchführung von Änderungen.

Deklaration von Konstanten

Konstanten werden mit dem Schlüsselwort "define" deklariert. Zu leichteren Erkennung empfiehlt es sich, Konstanten mit Grossbuchstaben zu bezeichnen; das fehlende "$"-Zeichen allein ist weniger auffällig. Die Konstantendefinition sollte konsequent in Anführungszeichen gesetzt werden. Der Typ ergibt sich aus den für Variablen geltenden Ausführungen. Auf die so erzeugte Konstante kann wie auf eine Variable zugegriffen werden. Hier wird die Konstante "DSN" definiert und ihr danach der Wert "shop" zugewiesen.

define("DSN", "DSN=shop");
echo "Die aktuelle DSN ist: ", DSN;
Die aktuelle DSN ist: DSN=shop

Konstanten sind überall im Skript gültig und müssen nicht mit Hilfe der Anweisung "global" sichtbar gemacht werden.

Konstanten können nur skalare Werte enthalten. Für komplexe Variablen müssen zwingend Variablen verwendet werden, auch wenn der Inhalt im Programmtext nicht variable sein sollte.

Konstanten können nicht nachträglich (zur Laufzeit) verändert werden. Folgender Ausdruck ist also unzulässig.

DSN = "DSN=shop";

Die Funktion "defined" wird verwendet, um festzustellen, ob eine bestimmte Konstante definiert wurde. Sie gibt "TRUE" zurück, wenn unter dem angegebenen Namen eine Konstante definiert wurde.

if (defined("DSN"))
{
  ## Aktion
}

Manchmal werden Ausdrücke erstellt, die Funktionen verlangen. Für solche Fälle kennt PHP die Funktion "constant" . Als Parameter ist der Name der Konstanten in Form einer Zeichenkette anzugeben.

define ("FARBE", "rot");
echo constant("FARBE");
rot

Mit der Funktion "get_defined_constants" können alle definierten Konstanten ermittelt werden. Sie gibt ein Array mit den Namen und Definitionen zurück. Zur bequemen Anzeige kann folgender Code verwendet werden.

<?php
echo "<pre>";
print_r(get_defined_constants());
echo "</pre>";
?>
Array
(
    [E_ERROR] => 1
    [E_RECOVERABLE_ERROR] => 4096
...
    [MYSQLI_REPORT_OFF] => 0
)

Vordefinierte Konstanten

Abhängig von der Installation stellt PHP einige oder alle der folgenden vordefinierten Konstanten zur Verfügung.

Konstante Beschreibung
PHP_VERSION Versionsnummer des PHP-Interpreters. Sie kann in Skripten verwendet werden, die sich an bestimmte Bedingungen der Versionen anpassen.
PHP_OS Betriebssystem. Es ist vor allem bei Operationen im Dateisystem wichtig.
DEFAULT_INCLUDE_PATH Standardpfad, in dem Dateien gesucht werden.
PEAR_INSTALL_DIR Installationsverzeichnis der Erweiterung PEAR.
PEAR_EXTENSION_DIR Erweiterungsverzeichnis der Erweiterung PEAR.
PHP_EXTENSION_DIR Pfad zu kompilierten PHP-Erweiterungen.
PHP_BINDIR Verzeichnis zu PHP selbst.
PHP_LIBDIR Verzeichnis der PHP-Bibliotheken.
PHP_DATADIR Datenverzeichnis.
PHP_SYSCONFDIR Konfigurationsverzeichnis.
PHP_LOCALSTATEDIR Ablageort lokaler Statusdateien.
PHP_CONFIG-FILE_PATH Pfad zur Konfigurationsdatei "php.ini".

In den meisten Programmiersprachen können die Zustände "wahr" und "falsch" durch eine Konstante dargestellt werden. Aufgrund des schwachen Typkonzepts von PHP wird ersatzweise angenommen, dass Werte ungleich 0 oder "0" als "wahr" betrachtet werden. Um trotzdem lesbare Skripte erzeugen zu können, werden die Konstanten "TRUE" und "FALSE" verwendet, die intern als 1 und 0 dargestellt werden. Auch die kleine Schreibweise "true" und "false" ist zulässig. Zusätzlich gibt es die Konstante "NULL" bzw. "null", die einen nicht vorhandenen Wert darstellt.

Pseudokonstanten

Für die Fehlersuche sind vier sogenannte Pseudokonstanten (benutzerseitig nicht änderbare Werte) wichtig, die immer die Datei (Skript) und die Zeilennummer enthalten, die gerade abgearbeitet wird. Wurde ein Fehler abgefangen, so kann in einer Fehlerausgabe auf diese Pseudokonstanten verwiesen und so die Quelle des Fehlers festgestellt werden.

Pseudokonstante Beschreibung
__FILE__ Enthält den Dateinamen des Skripts. Wenn der aktuelle Befehl sich in einer mit "include" eingebundenen Datei befindet, so wird der Name des Moduls ausgegeben.
__LINE__ Enthält die Zeilennummer, auf der sich der Befehl gerade befindet. Die Nummer ist relativ zu "__FILE__".
__CLASS__ Enthält die aktuelle Klasse, wenn Klassen verwendet werden.
__METHOD__ Enthält die aktuelle Methode, wenn innerhalb einer Klasse verwendet. Der Methodenname wird dabei immer in Kleinbuchstaben zurückgegeben.
__FUNCTION__ Liefert den Namen der Funktion. Der Funktionsname wird dabei immer in Kleinbuchstaben zurückgegeben

Bei der Entwickluing von fehlertoleranten Anwendungen sind auich die Konstanten "E_ERROR", "E_WARNING", "E_PARSE", "E_NOTICE" und "E_STRICT" von Bedeutung. "E_ALL" bezeichnet alle Fehlertypen. Diese Konstanten werden mit der Funktion "error_reporting" eingesetzt.

"E_Stricht" kann benutzt werden, um vom Parser Tipps zu erhalten, wie der Code "PHP5-gerecht" optimiert werden kann. Auf produktiven Systemen sollte diese Option nicht genutzt werden.

Vordefinierte Variablen

Neben den Konstanten kennt PHP auch viele vordefinierte Variablen, darunter die superglobalen Arrays. Die Verwendung anstatt einer Konstanten erfolgt, weil Konstanten keine Arrays aufnehmen können.