Menu
Coddy logo textTech

Statische Methoden & Eigenschaften

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

Ebenso wie Eigenschaften statisch sein können, können auch Methoden zur Klasse selbst gehören und nicht zu einzelnen Objekten. Statische Methoden werden direkt über die Klasse aufgerufen, ohne zuvor eine Instanz erstellen zu müssen.

Du deklarierst eine statische Methode mit dem Schlüsselwort static und rufst sie mit dem Klassennamen und dem Operator :: auf:

<?php
class MathHelper {
    public static function add($a, $b) {
        return $a + $b;
    }
    
    public static function multiply($a, $b) {
        return $a * $b;
    }
}

echo MathHelper::add(5, 3) . "\n";
echo MathHelper::multiply(4, 2);

Ausgabe:

8
8

Statische Methoden funktionieren gut mit statischen Eigenschaften. Ein gängiges Muster besteht darin, eine statische Methode zur Verwaltung gemeinsamer Klassendaten zu verwenden:

<?php
class Counter {
    private static $count = 0;
    
    public static function increment() {
        self::$count++;
    }
    
    public static function getCount() {
        return self::$count;
    }
}

Counter::increment();
Counter::increment();
echo Counter::getCount();

Ausgabe:

2

Beachte, dass statische Methoden $this nicht verwenden können, da es keine Objektinstanz gibt. Sie können nur über self:: auf statische Eigenschaften und andere statische Methoden zugreifen.

Wichtiger Punkt: Statische Methoden sind nützlich für Hilfsfunktionen, die keinen Objektstatus benötigen, oder für die Verwaltung von Daten auf Klassenebene. Sie stellen Funktionalität bereit, ohne dass eine Objektinstanziierung erforderlich ist.

challenge icon

Aufgabe

Einfach

Erstellen wir ein ID-Generator-System, das statische Methoden und Eigenschaften verwendet, um eindeutige Bezeichner zu erstellen, ohne Objekte instanziieren zu müssen.

Du erstellst zwei Dateien, um deinen Code zu organisieren:

  • IdGenerator.php: Definiere eine IdGenerator-Klasse, die die Generierung eindeutiger IDs ausschließlich mithilfe statischer Member verwaltet. Die Klasse sollte eine private statische Eigenschaft $lastId haben, die mit 0 beginnt, sowie eine private statische Eigenschaft $prefix, die auf "ID" gesetzt ist. Erstelle eine statische Methode generate(), die die letzte ID erhöht und eine formatierte Zeichenfolge zurückgibt, die das Präfix und die neue ID kombiniert (wie "ID1", "ID2" usw.). Füge eine statische Methode setPrefix($newPrefix) hinzu, die das Präfix ändert, sowie eine statische Methode getLastId(), die den aktuellen Wert von $lastId zurückgibt.
  • main.php: Binde die Klassendatei von IdGenerator ein. Generiere mithilfe des Standardpräfixes zwei IDs und gib jede in einer eigenen Zeile aus. Ändere anschließend mithilfe der statischen Methode das Präfix in "USER", generiere zwei weitere IDs und gib jede davon aus. Gib schließlich die letzte ID-Nummer aus, indem du die entsprechende statische Methode aufrufst.

Denke daran, dass statische Methoden direkt über die Klasse mit ClassName::methodName() aufgerufen werden. Innerhalb der Klasse greifst du mit self::$propertyName auf statische Eigenschaften zu. Da es keine Objektinstanz gibt, kannst du $this in statischen Methoden nicht verwenden.

Deine Ausgabe sollte die Abfolge der IDs mit unterschiedlichen Präfixen zeigen und veranschaulichen, wie statische Eigenschaften ihre Werte über mehrere Methodenaufrufe hinweg beibehalten.

Probier es selbst

<?php

// IdGenerator-Klassendatei einbinden
require_once 'IdGenerator.php';

// TODO: Zwei IDs mit dem Standardpräfix generieren und jede in einer eigenen Zeile ausgeben

// TODO: Das Präfix mit der statischen Methode auf "USER" ändern

// TODO: Zwei weitere IDs generieren und jede in einer eigenen Zeile ausgeben

// TODO: Die letzte ID-Nummer mit der entsprechenden statischen Methode ausgeben

?>
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