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 vonisset()oderempty()auf eine nicht zugängliche oder nicht existente Eigenschaft aufgerufen.__unset(string $name): Wird beim Aufruf vonunset()auf eine nicht zugängliche oder nicht existente Eigenschaft aufgerufen.__serialize(): Wird vor der Serialisierung des Objekts mitserialize()aufgerufen. Gibt ein Array der Eigenschaften für die Serialisierung zurück.__unserialize(array $data): Wird beim Deserialisieren des Objekts mitunserialize()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. mitecho). 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 mitvar_export()aufgerufen. Empfängt ein Array der Eigenschaften des Objekts.__debugInfo(): Wird beim Aufruf vonvar_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()