Abschnitt 2 · Lektion 6
Konstanten
Manche Werte in einem Programm ändern sich nie. Der Steuersatz, der Name der Firma, der Ordner, in dem die Bilder liegen. Man könnte sie in eine Variable legen und sich vornehmen, sie nicht mehr anzufassen. PHP hat für diesen Fall etwas Besseres.
const legt einen Wert ein für alle Mal fest
Eine Konstante schreibst du mit const, in Großbuchstaben und ohne Dollarzeichen.
<?php
const FIRMA = "Bergblick GmbH";
const MWST = 0.19;
$netto = 100;
$brutto = $netto + $netto * MWST;
echo FIRMA, "\n";
echo "Steuersatz: ", MWST * 100, " %\n";
echo "Brutto: ", $brutto, " Euro\n"; Die Großbuchstaben sind eine Verabredung und kein Zwang, aber halte dich daran: Sie sind das, woran man im Code sofort erkennt, dass sich hier nichts mehr ändert. Umlaute lässt du im Namen weg, so wie bei Variablen.
Rechnen kannst du mit einer Konstanten wie mit allem anderen, MWST * 100 funktioniert genauso wie
mit einer Variablen. Was nicht funktioniert, ist das Überschreiben. Eine Zeile MWST = 0.07; ist ein
Parse-Fehler, die Datei startet damit gar nicht erst, du kennst das aus Lektion 1.4. Genau darum geht
es: Die Zusage steht im Code und nicht in deinem Gedächtnis.
Dir ist vielleicht das Komma hinter echo aufgefallen. Das ist neu, und es hat mit der nächsten
Überschrift zu tun.
Warum eine Konstante ein Komma braucht
Bisher hast du Werte in eine Zeichenkette hineingeschrieben: "Hallo $name". Bei einer Konstanten
geht das nicht.
<?php
const STADT = "Köln";
$stadt = "Köln";
echo "Variable in der Zeichenkette: $stadt\n";
echo "Konstante in der Zeichenkette: STADT\n";
echo "Konstante daneben: ", STADT, "\n"; Die zweite Zeile gibt wörtlich STADT aus. Kein Fehler, keine Warnung, nur der falsche Text mitten
in deiner Ausgabe. Der Grund ist genau das fehlende Dollarzeichen: PHP sucht in einer Zeichenkette
nach Variablen, und STADT ist keine, also ist es gewöhnlicher Text.
Das ist einer der stillsten Fehler in PHP, und du wirst ihn irgendwann machen. Die Lösung siehst du
in der dritten Zeile: Die Konstante steht neben der Zeichenkette, getrennt durch ein Komma.
echo nimmt beliebig viele Werte, durch Kommas getrennt, und schreibt sie einen nach dem anderen
hinaus. Für Konstanten ist das der übliche Weg. In Lektion 3.2 lernst du noch eine zweite
Möglichkeit, Teile zusammenzusetzen.
const oder define
Es gibt einen zweiten Weg, eine Konstante anzulegen: die Funktion define().
<?php
define("PFAD", "/var/www");
echo PFAD, "\n";
define("PFAD", "/tmp");
echo PFAD, "\n";
echo "fertig\n"; Der Unterschied ist unauffälliger, als er klingt. const wird festgelegt, während PHP deine Datei
liest, und darf deshalb nur ganz oben stehen, außerhalb von allem. define() läuft mit wie eine
normale Anweisung, kann also einen Wert bekommen, der vorher erst ausgerechnet wurde, und darf
später auch in einer Bedingung stehen.
Nimm im Kurs const, außer du brauchst wirklich define(). Es liest sich besser, und ein
Schreibfehler fällt früher auf.
Interessant ist, was passiert, wenn du eine Konstante ein zweites Mal festlegst. Die Ausgabe zeigt
zweimal /var/www: Der neue Wert wird nicht übernommen. Auf dem Fehlerkanal steht eine Warnung
dazu, und der Zusatz darin ist bemerkenswert, denn er sagt, dass daraus in PHP 9 ein echter Fehler
wird. Das Programm läuft trotzdem bis fertig durch, wie du es von Warnungen kennst.
Was PHP schon mitbringt
Ein paar Konstanten gibt es, ohne dass du etwas tun musst.
<?php
echo "Version: ", PHP_VERSION, "\n";
echo "Größte Zahl: ", PHP_INT_MAX, "\n";
echo "Zeile eins", PHP_EOL, "Zeile zwei", PHP_EOL; PHP_VERSION sagt, welche Fassung hier läuft, PHP_INT_MAX nennt die größte ganze Zahl, die noch
exakt hineinpasst. Die brauchst du selten, aber wenn eine Rechnung plötzlich Unsinn liefert, ist der
Blick dorthin schnell getan.
PHP_EOL ist der Zeilenumbruch des Systems, auf dem dein Code gerade läuft. Auf Linux, also auch
hier, ist das genau dasselbe wie "\n". Der Sinn zeigt sich erst, wenn du eine Datei schreibst, die
jemand unter Windows öffnet, denn dort ist ein Zeilenumbruch etwas anderes. Für Text, der im Browser
landet, bringt es nichts, dort zählt HTML.
Womit du übrigens die Bausteine zusammen hast: Werte, Namen dafür, die Sorten, die es gibt, und Namen, die sich nicht mehr ändern. Ab dem nächsten Abschnitt fängst du an, damit wirklich zu arbeiten.
Zum Mitnehmen
Eine Konstante hat kein Dollarzeichen. Das ist keine Schreibregel, sondern der Grund, warum sie sich anders verhält als eine Variable, und zwar genau dort, wo man es nicht erwartet.
Jetzt du
Basis Konto, kostenlosZu dieser Lektion gehört eine Aufgabe. Du schreibst den Code selbst, und nach jedem Lauf sagt dir eine Prüfliste, was schon stimmt.
Dafür brauchst du das Basis Konto. Es kostet nichts, und ein Passwort gibt es auch nicht.
In diesem Kurs läuft dein Code auf einem Server. Dafür hat das Basis Konto 1 Stunde im Monat, mehr Zeit gibt es mit dem Premium Konto.
Was in dieser Lektion steckt
-
Artikel mit 4 Beispielen zum Ausprobieren
Steht hier, ohne Konto lesbar.
-
Aufgabe, dein Code läuft auf einem Server
Öffnet sich mit dem Basis Konto.