PHP - Klassenkonstanten: Ein Anfängerleitfaden

Hallo da draußen, angehende PHP-Entwickler! Heute tauchen wir in die Welt der Klassenkonstanten in PHP ein. Machen Sie sich keine Sorgen, wenn Sie neu im Programmieren sind; ich werde Sie durch dieses Konzept Schritt für Schritt führen, genau wie ich es in den letzten Jahren für unzählige Schüler getan habe. Also, holen Sie sich eine Tasse Kaffee (oder Tee, wenn das mehr Ihr Ding ist) und los geht's!

PHP - Class Constants

Was sind Klassenkonstanten?

Bevor wir uns den Details widmen, lassen Sie uns verstehen, was Klassenkonstanten sind. Stellen Sie sich vor, Sie bauen ein Haus (Ihre PHP-Klasse). Sie benötigen einige feste Maße, die nicht ändern, wie die Höhe der Decke. Genau das sind Klassenkonstanten in PHP - feste Werte, die mit einer Klasse assoziiert sind und nicht geändert werden.

Warum Klassenkonstanten verwenden?

  1. Sie bieten eine Möglichkeit, feste Werte innerhalb einer Klasse zu definieren.
  2. Sie sind lesbarer und wartbarer als die Verwendung von magischen Zahlen oder Zeichenketten.
  3. Sie können aufgerufen werden, ohne eine Instanz der Klasse zu erstellen.

Nun sehen wir, wie wir Klassenkonstanten erstellen und verwenden können.

Beispiel für Klassenkonstanten

Lassen Sie mit einem einfachen Beispiel beginnen. Stellen wir uns eine Klasse vor, die einen Kreis darstellt.

class Circle {
const PI = 3.14159;

private $radius;

public function __construct($radius) {
$this->radius = $radius;
}

public function calculateArea() {
return self::PI * $this->radius * $this->radius;
}
}

// Verwenden der Klassenkonstanten
echo Circle::PI; // Ausgabe: 3.14159

// Erstellen eines Kreises und Berechnung seiner Fläche
$myCircle = new Circle(5);
echo $myCircle->calculateArea(); // Ausgabe: 78.53975

Lassen Sie uns das aufschlüsseln:

  1. Wir definieren eine Konstante PI mit dem const-Schlüsselwort innerhalb unserer Circle-Klasse.
  2. Wir können diese Konstante innerhalb der Klassenmethoden mit self::PI aufrufen.
  3. Außenhalb der Klasse können wir sie mit Circle::PI aufrufen.
  4. Die calculateArea()-Methode verwendet diese Konstante, um die Fläche des Kreises zu berechnen.

Klassenkonstanten als Ausdrücke

In PHP 5.6 und später können Sie Konstantenausdrücke verwenden, um Klassenkonstanten zu definieren. Das bedeutet, Sie können arithmetische Operationen oder sogar andere Konstanten verwenden, um eine neue Konstante zu definieren. Sehen wir uns ein Beispiel an:

class MathConstants {
const PI = 3.14159;
const TAU = self::PI * 2;
const HALF_PI = self::PI / 2;
}

echo MathConstants::TAU;    // Ausgabe: 6.28318
echo MathConstants::HALF_PI; // Ausgabe: 1.570795

In diesem Beispiel definieren wir TAU und HALF_PI basierend auf dem Wert von PI. Das ist wirklich praktisch, wenn Sie Konstanten haben, die miteinander in Beziehung stehen.

Sichtbarkeitsmodifikatoren für Klassenkonstanten

Ab PHP 7.1 können Sie Sichtbarkeitsmodifikatoren für Klassenkonstanten verwenden. Dies ermöglicht es Ihnen, die Zugänglichkeit Ihrer Konstanten zu steuern, genau wie Sie es bei Eigenschaften und Methoden tun. Sehen wir uns ein Beispiel an:

class Seasons {
public const SPRING = 'Spring';
protected const SUMMER = 'Summer';
private const AUTUMN = 'Autumn';
const WINTER = 'Winter'; // Kein Modifikator, standardmäßig öffentlich

public function getSummer() {
return self::SUMMER;
}

private function getAutumn() {
return self::AUTUMN;
}
}

$seasons = new Seasons();

echo Seasons::SPRING; // Funktioniert gut, es ist öffentlich
echo Seasons::WINTER; // Funktioniert auch, es ist standardmäßig öffentlich
echo $seasons->getSummer(); // Funktioniert, Zugriff auf geschützte Konstante über eine öffentliche Methode
// echo Seasons::SUMMER; // Dies würde einen Fehler verursachen, SUMMER ist geschützt
// echo Seasons::AUTUMN; // Dies würde einen Fehler verursachen, AUTUMN ist privat

Lassen Sie uns die Sichtbarkeitsmodifikatoren aufschlüsseln:

  1. public: Kann von überall zugriffen werden.
  2. protected: Kann nur innerhalb der Klasse und deren Unterclasses aufgerufen werden.
  3. private: Kann nur innerhalb der Klasse selbst aufgerufen werden.

Wenn kein Sichtbarkeitsmodifikator angegeben ist, ist die Konstante standardmäßig öffentlich.

Praktische Anwendungsfälle für Klassenkonstanten

Nun, da wir verstehen, wie Klassenkonstanten funktionieren, schauen wir uns einige realistische Szenarien an, in denen sie besonders nützlich sein können:

  1. Konfigurationseinstellungen:

    class DatabaseConfig {
    const HOST = 'localhost';
    const USERNAME = 'root';
    const PASSWORD = 'secretpassword';
    const DATABASE = 'myapp';
    }
  2. Fehlercodes:

    class ErrorCodes {
    const NOT_FOUND = 404;
    const SERVER_ERROR = 500;
    const UNAUTHORIZED = 401;
    }
  3. Enum-ähnliche Strukturen:

    class UserRoles {
    const ADMIN = 'admin';
    const EDITOR = 'editor';
    const SUBSCRIBER = 'subscriber';
    }

Best Practices und Tipps

  1. Verwenden Sie GROSSBUCHSTABEN: Es ist Konvention, Konstanten in Großbuchstaben mit Unterstrichen für Leerzeichen zu nennen.
  2. Verwenden Sie nicht zu oft: Obwohl Konstanten nützlich sind, verwenden Sie sie nicht übergangen. Verwenden Sie sie für wirklich konstante Werte.
  3. Dokumentation: Fügen Sie immer Kommentare hinzu, um zu erklären, was Ihre Konstanten darstellen, insbesondere wenn deren Zweck nicht sofort aus dem Namen hervorgeht.

Schlussfolgerung

Und hier haben Sie es, Leute! Wir haben die Welt der PHP-Klassenkonstanten bereist. Von der grundlegenden Verwendung bis zu Sichtbarkeitsmodifikatoren, Sie haben nun die Werkzeuge, um Konstanten effektiv in Ihren PHP-Klassen zu verwenden. Denken Sie daran, dass Konstanten wie das Fundament Ihres Hauses sind - sie bieten Stabilität und Konsistenz für Ihren Code.

Bei Ihrer Weiterreise durch die Welt von PHP werden Sie viele aufregende Funktionen entdecken. Aber für jetzt, gratulieren Sie sich selbst, dass Sie Klassenkonstanten gemeistert haben. Weiter codieren, weiter lernen und vor allem, haben Sie Spaß dabei!

Frohes Coden, zukünftige PHP-Meister! ??‍??‍?

Methode Beschreibung
const CONSTANT_NAME = value; Definiert eine Klassenkonstante
ClassName::CONSTANT_NAME Ruft eine Klassenkonstante von außerhalb der Klasse auf
self::CONSTANT_NAME Ruft eine Klassenkonstante innerhalb der Klasse auf
public const CONSTANT_NAME = value; Definiert eine öffentliche Klassenkonstante (PHP 7.1+)
protected const CONSTANT_NAME = value; Definiert eine geschützte Klassenkonstante (PHP 7.1+)
private const CONSTANT_NAME = value; Definiert eine private Klassenkonstante (PHP 7.1+)

Credits: Image by storyset