Menu
Coddy logo textTech

Statische Methoden & Eigenschaften

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

Genauso wie Eigenschaften statisch sein können, können auch Methoden zur Klasse selbst gehören, anstatt zu einzelnen Objekten. Statische Methoden werden direkt auf der Klasse aufgerufen, ohne dass zuerst eine Instanz erstellt werden muss.

Sie deklarieren eine statische Methode mit dem static Schlüsselwort und rufen 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 arbeiten gut mit statischen Eigenschaften zusammen. Ein gängiges Muster ist die Verwendung einer statischen Methode zur Verwaltung gemeinsamer Klassendaten:

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

Beachten Sie, dass statische Methoden $this nicht verwenden können, da keine Objektinstanz vorhanden ist. Sie können nur auf statische Eigenschaften und andere statische Methoden unter Verwendung von self:: zugreifen.

Wichtiger Punkt: Statische Methoden sind nützlich für Utility-Funktionen, die keinen Objektzustand benötigen, oder für die Verwaltung von Daten auf Klassenebene. Sie bieten Funktionalität, ohne dass eine Objektinstanziierung erforderlich ist.

challenge icon

Aufgabe

Einfach

Lassen Sie uns ein ID-Generatorsystem bauen, das statische Methoden und Eigenschaften verwendet, um eindeutige Identifikatoren zu erstellen, ohne Objekte instanziieren zu müssen.

Sie werden zwei Dateien erstellen, um Ihren Code zu organisieren:

  • IdGenerator.php — Definieren Sie eine IdGenerator-Klasse, die die Generierung eindeutiger IDs nur mit statischen Mitgliedern verwaltet. Die Klasse sollte eine private statische Eigenschaft $lastId haben, die bei 0 beginnt, und eine private statische Eigenschaft $prefix, die auf "ID" gesetzt ist. Erstellen Sie eine statische Methode generate(), die die letzte ID erhöht und einen formatierten String zurückgibt, der das Präfix und die neue ID kombiniert (wie "ID1", "ID2", etc.). Fügen Sie eine statische Methode setPrefix($newPrefix) hinzu, die das Präfix ändert, und eine statische Methode getLastId(), die den aktuellen Wert von $lastId zurückgibt.
  • main.php — Binden Sie die IdGenerator-Klassendatei ein. Generieren Sie zwei IDs mit dem Standardpräfix und geben Sie jede in einer eigenen Zeile aus. Ändern Sie dann das Präfix mit der statischen Methode in "USER", generieren Sie zwei weitere IDs und geben Sie jede aus. Geben Sie schließlich die letzte ID-Nummer aus, indem Sie die entsprechende statische Methode aufrufen.

Denken Sie daran, dass statische Methoden direkt auf der Klasse mit ClassName::methodName() aufgerufen werden und Sie innerhalb der Klasse auf statische Eigenschaften mit self::$propertyName zugreifen. Da es keine Objektinstanz gibt, können Sie $this nicht in statischen Methoden verwenden.

Ihre Ausgabe sollte den Fortschritt der IDs mit verschiedenen Präfixen zeigen und demonstrieren, wie statische Eigenschaften ihre Werte über mehrere Methodenaufrufe hinweg beibehalten.

Spickzettel

Statische Methoden gehören zur Klasse selbst und werden aufgerufen, ohne eine Instanz zu erstellen. Deklarieren Sie diese mit dem Schlüsselwort static und rufen Sie sie mit dem Klassennamen und dem Operator :: auf:

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

echo MathHelper::add(5, 3); // 8

Statische Methoden können auf statische Eigenschaften mit self:: zugreifen:

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

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

Statische Methoden können $this nicht verwenden, da keine Objektinstanz vorhanden ist. Sie können nur auf statische Eigenschaften und andere statische Methoden mit self:: zugreifen.

Statische Methoden sind nützlich für Hilfsfunktionen, die keinen Objektzustand benötigen, oder für die Verwaltung von Daten auf Klassenebene, ohne dass eine Objektinstanziierung erforderlich ist.

Probier es selbst

<?php

// Binde die IdGenerator-Klassendatei ein
require_once 'IdGenerator.php';

// TODO: Generiere zwei IDs mit dem Standard-Präfix und gib jede in einer eigenen Zeile aus

// TODO: Ändere das Präfix mithilfe der statischen Methode zu „USER“

// TODO: Generiere zwei weitere IDs und gib jede in einer eigenen Zeile aus

// TODO: Gib die letzte ID-Nummer mithilfe der entsprechenden statischen Methode aus

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