Sobes.tech
Junior

Welche magischen Methoden von Klassen kennen Sie?

sobes.tech KI

Antwort von AI

Die magischen Methoden in PHP sind spezielle Methoden, die automatisch bei bestimmten Ereignissen aufgerufen werden. Sie beginnen mit __ (doppelter Unterstrich).

Hauptmagische Methoden:

  • __construct(): Wird beim Erstellen einer neuen Instanz der Klasse aufgerufen. Wird zur Initialisierung des Objekts verwendet.
  • __destruct(): Wird beim Löschen eines Objekts oder beim Beenden des Skripts aufgerufen. Wird zum Freigeben von Ressourcen verwendet.
  • __call(string $name, array $arguments): Wird beim Versuch aufgerufen, eine nicht zugängliche oder nicht existente Methode aufzurufen.
  • __callStatic(string $name, array $arguments): Wird beim Versuch aufgerufen, eine nicht zugängliche oder nicht existente statische Methode aufzurufen.
  • __get(string $name): Wird beim Versuch aufgerufen, auf eine nicht zugängliche oder nicht existente Eigenschaft zuzugreifen.
  • __set(string $name, mixed $value): Wird beim Versuch aufgerufen, einen Wert auf eine nicht zugängliche oder nicht existente Eigenschaft zu setzen.
  • __isset(string $name): Wird beim Aufruf von isset() oder empty() auf eine nicht zugängliche oder nicht existente Eigenschaft aufgerufen.
  • __unset(string $name): Wird beim Aufruf von unset() auf eine nicht zugängliche oder nicht existente Eigenschaft aufgerufen.
  • __serialize(): Wird vor der Serialisierung des Objekts mit serialize() aufgerufen. Gibt ein Array der Eigenschaften für die Serialisierung zurück.
  • __unserialize(array $data): Wird beim Deserialisieren des Objekts mit unserialize() aufgerufen. Empfängt ein Array von Daten zur Wiederherstellung der Eigenschaften.
  • __toString(): Ermöglicht die Behandlung des Objekts als String. Wird beim Versuch aufgerufen, das Objekt als String auszugeben (z.B. mit echo). Sollte einen String zurückgeben.
  • __invoke(...$arguments): Ermöglicht die Behandlung des Objekts als Funktion. Wird beim Versuch aufgerufen, das Objekt als Funktion zu verwenden.
  • __set_state(array $properties): Wird beim Wiederherstellen des Objekts mit var_export() aufgerufen. Empfängt ein Array der Eigenschaften des Objekts.
  • __debugInfo(): Wird beim Aufruf von var_dump() auf einem Objekt aufgerufen. Sollte ein Array mit Debug-Informationen zurückgeben.

Beispiel für die Verwendung von __construct und __toString:

<?php
class MyClass {
    private $name;

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

    public function __toString(): string {
        return "Objekt mit Namen: " . $this->name;
    }
}

$obj = new MyClass("Test");
echo $obj; // Ruft __toString() auf

Beispiel für die Verwendung von __get und __set:

<?php
class MyClass {
    private $data = [];

    public function __set(string $name, mixed $value): void {
        $this->data[$name] = $value;
    }

    public function __get(string $name): mixed {
        if (array_key_exists($name, $this->data)) {
            return $this->data[$name];
        }
        return null; // Oder eine Ausnahme werfen
    }
}

$obj = new MyClass();
$obj->prop1 = "Wert 1"; // Ruft __set() auf
echo $obj->prop1; // Ruft __get()