Syntax
Sie können eine Konstante definieren, indem Sie entweder die define()-Funktion oder ab PHP 5.3.0 das Schlüsselwort const außerhalb einer Klassendefinition verwenden. Während define() es ermöglicht eine Konstante auf einen beliebigen Wert zu definieren, hat das const Schlüsselwort Einschränkungen, die im nächsten Absatz beschrieben werden. Einmal definiert, kann eine Konstane weder verändert noch gelöscht werden.
Wenn das const Schlüsselwort verwendet wird, können Konstanten vor PHP 5.6 nur skalare Daten (boolean, integer, float und string) enthalten. Von PHP 5.6 an ist es möglich eine Konstante als skalaren Ausdruck zu definieren, und es ist ebenfalls möglich eine Array Konstante zu definieren. Es ist möglich, Konstanten vom Typ resource zu definieren, dies sollte allerdings vermieden werden, da es zu unerwarteten Ergebnissen führen kann.
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.
Hinweis: 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.
Dieses Rückfallverhalten ist von PHP 7.2.0 an missbilligt, und ein Fehler
der Stufe E_WARNING
wird ausgelöst, wenn es dazu kommt
(zuvor wurde ein Fehler der Stufe E_NOTICE
ausgelöst).
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).
Dies gilt nicht für (vollständig)
qualifizierte Konstanten, die einen fatalen Fehler erzeugen, wenn sie
undefiniert sind.
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;
- Vor PHP 5.3 können Konstanten 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. Ab PHP 5.6.0 ist es möglich, Array-Konstanten mit dem const Schlüsselwort zu definieren; ab PHP 7 können Array-Konstanten ebenfalls mit define() definiert werden. In konstanten skalaren Ausdrücken können Arrays verwendet werden (z.B. const FOO = array(1, 2, 3)[0];), aber das Endergebnis muss ein Wert eines erlaubten Typs sein.
Beispiel #1 Definiton von Konstanten
<?php
define("KONSTANTE", "Hallo Welt.");
echo KONSTANTE; // Ausgabe: "Hallo Welt."
echo Konstante; // Ausgabe: "Konstante" und eine Notice.
?>
Beispiel #2 Definition von Konstanten unter Verwendung des const-Keywords
<?php
// Funktioniert seit PHP 5.3.0
const KONSTANTE = 'Hallo Welt';
echo KONSTANTE;
// Funktioniert seit PHP 5.6.0
const ANDERE_KONSTANTE = KONSTANTE . '; Ade Welt';
echo ANDERE_KONSTANTE;
const ANIMALS = array('Hund', 'Katze', 'Maus');
echo ANIMALS[1]; // gibt "Katze" aus
// Funktioniert seit PHP 7
define('ANIMALS', array(
'Hund',
'Katze',
'Maus'
));
echo ANIMALS[1]; // gibt "Katze" aus
?>
Hinweis:
Im Gegensatz zu Konstanten, welche mit define() ersellt werden, müssen über const definierte Konstanten im Top-Level Scope erstellt werden, weil sie zur Compile Zeit definiert werden. Das heißt, dass sie nicht innerhalb von Funktionen, Schleifen, if Statements oder try/catch Blöcken definiert werden können.
Hinweis:
Konstanten, die mittels des const Schlüsselworts definiert wurden, sind immer case-sensitive (Groß-/Kleinschreibung wird unterschieden), während Konstanten, die mittels define() definiert wurden, case-insensitive (Groß-/Kleinschreibung spielt keine Rolle) sein können.
Lesen Sie ebenfalls den Abschnitt über Klassenkonstanten.
Deutsche Übersetzung
Sie haben gebeten, diese Seite auf Deutsch zu besuchen. Momentan ist nur die Oberfläche übersetzt, aber noch nicht der gesamte Inhalt.Wenn Sie mir bei Übersetzungen helfen wollen, ist Ihr Beitrag willkommen. Alles, was Sie tun müssen, ist, sich auf der Website zu registrieren und mir eine Nachricht zu schicken, in der Sie gebeten werden, Sie der Gruppe der Übersetzer hinzuzufügen, die Ihnen die Möglichkeit gibt, die gewünschten Seiten zu übersetzen. Ein Link am Ende jeder übersetzten Seite zeigt an, dass Sie der Übersetzer sind und einen Link zu Ihrem Profil haben.
Vielen Dank im Voraus.
Dokument erstellt 30/01/2003, zuletzt geändert 26/10/2018
Quelle des gedruckten Dokuments:https://www.gaudry.be/de/php-rf-language.constants.syntax.html
Die Infobro ist eine persönliche Seite, deren Inhalt in meiner alleinigen Verantwortung liegt. Der Text ist unter der CreativeCommons-Lizenz (BY-NC-SA) verfügbar. Weitere Informationen auf die Nutzungsbedingungen und dem Autor.
Referenzen
Diese Verweise und Links verweisen auf Dokumente, die während des Schreibens dieser Seite konsultiert wurden, oder die zusätzliche Informationen liefern können, aber die Autoren dieser Quellen können nicht für den Inhalt dieser Seite verantwortlich gemacht werden.
Der Autor Diese Website ist allein dafür verantwortlich, wie die verschiedenen Konzepte und Freiheiten, die mit den Nachschlagewerken gemacht werden, hier dargestellt werden. Denken Sie daran, dass Sie mehrere Quellinformationen austauschen müssen, um das Risiko von Fehlern zu reduzieren.