PHP Constants: In PHP sind Konstanten benannte Werte, die während der Laufzeit nicht verändert werden können. Sie sind ideal, um feste Werte wie mathematische Konstanten, Konfigurationswerte oder andere unveränderliche Daten zu speichern, die im gesamten Skript zugänglich sein müssen. Anders als Variablen benötigen Konstanten kein $
-Symbol und bieten eine einfache Möglichkeit, stabil bleibende Daten zu definieren.
Erstellen von Konstanten
Eine Konstante wird mit der Funktion define()
erstellt. Der Name der Konstante muss als erster Parameter ein gültiger String sein, und als zweiter Parameter wird der Wert der Konstante übergeben.
Syntax:
define("NAME_DER_KONSTANTE", wert);
Beispiel:
<?php
define("WEBSITE_NAME", "MeineWebseite");
echo WEBSITE_NAME; // Ausgabe: MeineWebseite
?>
Regeln für Konstanten
- Konstanten dürfen keine
$
-Symbole enthalten. - Einmal definiert, können Konstanten nicht geändert oder gelöscht werden.
- Es ist üblich, Konstanten in Großbuchstaben zu schreiben, um sie von Variablen zu unterscheiden.
- Konstanten sind immer global verfügbar.
Konstante mit dem const-Schlüsselwort
In PHP können Konstanten auch mit dem const
-Schlüsselwort definiert werden. Dies ist insbesondere innerhalb von Klassen oder Namespaces hilfreich.
<?php
const VERSION = "1.0.0";
echo VERSION; // Ausgabe: 1.0.0
?>
Unterschiede zwischen define() und const
const
wird zur Kompilierzeit ausgewertet, währenddefine()
zur Laufzeit verwendet wird.const
kann innerhalb von Klassen und Namespaces verwendet werden,define()
nicht.const
erlaubt nur Skalartypen wie Strings, Zahlen und Booleans als Wert.
Zugriff auf Konstanten
Da Konstanten global sind, sind sie überall im Skript zugänglich, ohne dass sie speziell innerhalb einer Funktion oder eines anderen Scopes deklariert werden müssen.
<?php
define("API_KEY", "12345");
function zeigeAPIKey() {
echo API_KEY;
}
zeigeAPIKey(); // Ausgabe: 12345
?>
Magische Konstanten
PHP bietet vordefinierte magische Konstanten, deren Werte sich je nach Kontext ändern. Sie beginnen und enden mit zwei Unterstrichen (__
). Einige der wichtigsten sind:
__LINE__
: Gibt die aktuelle Zeilennummer im Skript zurück.__FILE__
: Gibt den vollständigen Pfad und den Dateinamen des Skripts zurück.__DIR__
: Gibt das Verzeichnis der Datei zurück.__FUNCTION__
: Gibt den Namen der aktuellen Funktion zurück.__CLASS__
: Gibt den Namen der aktuellen Klasse zurück.__TRAIT__
: Gibt den Namen des aktuellen Traits zurück.__METHOD__
: Gibt den Namen der aktuellen Methode zurück.__NAMESPACE__
: Gibt den Namen des aktuellen Namespaces zurück.
Beispiel:
<?php
echo "Dies ist Zeile " . __LINE__; // Ausgabe: Dies ist Zeile x (je nach Zeile)
echo "Dateipfad: " . __FILE__; // Ausgabe: Pfad zur aktuellen Datei
?>
Verwendung von Konstanten in Klassen
In Klassen können Konstanten als const
-Werte definiert werden. Klassenkonstanten bieten eine sichere Möglichkeit, feststehende Werte, die nur in einer Klasse gelten sollen, festzulegen. Der Zugriff erfolgt über den Klassennamen und den ::
-Operator.
<?php
class Fahrzeug {
const ANZAHL_RAEDER = 4;
public function zeigeRaeder() {
echo "Ein Fahrzeug hat " . self::ANZAHL_RAEDER . " Räder.";
}
}
$auto = new Fahrzeug();
$auto->zeigeRaeder(); // Ausgabe: Ein Fahrzeug hat 4 Räder.
?>
Arrays als Konstanten (ab PHP 5.6)
PHP erlaubt es, Konstanten auch als Arrays zu definieren. Dies bietet eine flexible Möglichkeit, eine feste Gruppe von Werten innerhalb eines Skripts bereitzustellen.
<?php
define("FARBEN", ["Rot", "Blau", "Grün"]);
echo FARBEN[0]; // Ausgabe: Rot
?>
In Klassen können auch konstante Arrays definiert werden:
<?php
class Einstellungen {
const OPTIONEN = ["Option1", "Option2", "Option3"];
}
echo Einstellungen::OPTIONEN[1]; // Ausgabe: Option2
?>
Verwendung von defined()
Um zu überprüfen, ob eine Konstante definiert wurde, bietet PHP die Funktion defined()
. Dies kann hilfreich sein, um Fehler zu vermeiden, die durch den mehrfachen Aufruf von define()
entstehen könnten.
<?php
if (!defined("API_URL")) {
define("API_URL", "https://meine-api.com");
}
echo API_URL; // Ausgabe: https://meine-api.com
?>
Häufig gestellte Fragen
Warum const statt define() in Klassen in PHP verwenden?
const
ist innerhalb von Klassen besser geeignet, da es direkt zur Kompilierzeit verarbeitet wird und durch den ::
-Operator leicht zugänglich ist. Zudem unterstützt const
nur die Syntax für Klassen.
Kann eine Konstante überschrieben werden?
Nein, eine Konstante kann in PHP nicht überschrieben oder neu definiert werden, nachdem sie erstellt wurde. Ein erneuter Aufruf von define()
oder const
führt zu einem Fehler.
Warum sind magische Konstanten nützlich?
Magische Konstanten bieten automatisch Kontextinformationen wie Dateipfad, Zeilennummer oder Funktionsname und erleichtern so das Debugging und die Nachverfolgbarkeit im Code.