Menu
Coddy logo textTech

Konstanten in Klassen

Teil des Abschnitts Objektorientierte Programmierung der PHP-Journey von Coddy. Lektion 16 von 91.

Manchmal benötigst du Werte in einer Klasse, die sich niemals ändern sollen. Klassenkonstanten bieten eine Möglichkeit, feste Werte zu definieren, die für alle Instanzen gleich bleiben und nach der Deklaration nicht geändert werden können.

Du definierst eine Konstante mit dem Schlüsselwort const innerhalb einer Klasse. Konventionsgemäß werden Konstantennamen in Großbuchstaben geschrieben:

<?php
class Circle {
    const PI = 3.14159;
    
    public $radius;
    
    public function __construct($radius) {
        $this->radius = $radius;
    }
    
    public function area() {
        return self::PI * $this->radius * $this->radius;
    }
}

$circle = new Circle(5);
echo $circle->area();

Ausgabe:

78.53975

Wie statische Eigenschaften gehören Konstanten zur Klasse und nicht zu einzelnen Objekten. Du greifst innerhalb der Klasse mit self::CONSTANT_NAME oder von außerhalb mit ClassName::CONSTANT_NAME auf sie zu:

<?php
class HttpStatus {
    const OK = 200;
    const NOT_FOUND = 404;
    const SERVER_ERROR = 500;
}

echo HttpStatus::OK . "\n";
echo HttpStatus::NOT_FOUND;

Ausgabe:

200
404

Wichtiger Punkt: Im Gegensatz zu statischen Eigenschaften können Konstanten nach ihrer Definition nicht geändert werden. Sie sind ideal für Werte, die während der gesamten Anwendung unverändert bleiben sollen, etwa Konfigurationswerte, Statuscodes oder mathematische Konstanten.

challenge icon

Aufgabe

Einfach

Erstellen wir ein Dienstprogramm zur Temperaturumrechnung, das Klassenkonstanten verwendet, um feste Umrechnungswerte zu speichern, die sich nie ändern.

Du erstellst zwei Dateien, um deinen Code zu organisieren:

  • Temperature.php: Definiere eine Temperature-Klasse, die Temperaturumrechnungen verarbeitet. Die Klasse sollte drei Konstanten haben: FREEZING_POINT_C, gesetzt auf 0, BOILING_POINT_C, gesetzt auf 100, und CONVERSION_FACTOR, gesetzt auf 1.8 (wird für die Umrechnung von Celsius in Fahrenheit verwendet). Füge eine public $celsius-Eigenschaft und einen Konstruktor hinzu, der den Celsius-Wert entgegennimmt und setzt. Füge eine toFahrenheit()-Methode hinzu, die die gespeicherte Celsius-Temperatur mithilfe der Formel (celsius * CONVERSION_FACTOR) + 32 in Fahrenheit umrechnet. Füge außerdem eine getStatus()-Methode hinzu, die "Freezing" zurückgibt, wenn die Temperatur dem Wert der Gefrierpunktkonstanten entspricht, "Boiling", wenn sie dem Wert der Siedepunktkonstanten entspricht, oder andernfalls "Normal".
  • main.php: Binde die Klassendatei von Temperature ein. Erstelle drei Temperature-Objekte mit den Werten 0, 100 und 25. Gib für jede Temperatur die Fahrenheit-Umrechnung gefolgt vom Status in derselben Zeile in diesem Format aus: "[fahrenheit]F - [status]". Jede Temperatur sollte in einer eigenen Zeile stehen. Nachdem alle drei ausgegeben wurden, greife direkt über die Klasse auf die Konstante BOILING_POINT_C zu (unter Verwendung von Temperature::BOILING_POINT_C) und gib sie in einer neuen Zeile aus.

Denke daran, dass innerhalb der Klasse über self::CONSTANT_NAME und außerhalb über ClassName::CONSTANT_NAME auf Konstanten zugegriffen wird. Anders als bei Eigenschaften wird beim Zugriff auf Konstanten das Symbol $ nicht verwendet.

Probier es selbst

<?php

require_once 'Temperature.php';

// TODO: Erstelle drei Temperature-Objekte mit den Werten 0, 100 und 25

// TODO: Gib für jede Temperatur im Format aus: "[fahrenheit]F - [status]"
// Jede Temperatur in einer eigenen Zeile

// TODO: Greife auf die Konstante BOILING_POINT_C direkt von der Klasse zu und gib sie aus
// Verwende die Syntax ClassName::CONSTANT_NAME

?>
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Objektorientierte Programmierung

Übe selbstständig: Online-PHP-Compiler