Junior
Was sind magische Methoden in PHP?
sobes.tech KI
Antwort von AI
Die magischen Methoden in PHP sind spezielle Methoden, die in bestimmten Situationen automatisch aufgerufen werden. Ihre Namen beginnen mit zwei Unterstrichen (__).
Liste der wichtigsten magischen Methoden:
__construct(): Wird beim Erstellen eines neuen Objekts aufgerufen.__destruct(): Wird beim Zerstören eines Objekts aufgerufen.__call($name, $arguments): Wird aufgerufen, wenn versucht wird, eine nicht zugängliche oder nicht existente Methode des Objekts aufzurufen.__callStatic($name, $arguments): Wird aufgerufen, wenn versucht wird, eine nicht zugängliche oder nicht existente statische Methode aufzurufen.__get($name): Wird aufgerufen, wenn versucht wird, den Wert einer nicht zugänglichen Eigenschaft des Objekts zu erhalten.__set($name, $value): Wird aufgerufen, wenn versucht wird, den Wert einer nicht zugänglichen Eigenschaft des Objekts zu setzen.__isset($name): Wird beim Einsatz vonisset()oderempty()auf einer nicht zugänglichen Eigenschaft aufgerufen.__unset($name): Wird beim Einsatz vonunset()auf einer nicht zugänglichen Eigenschaft aufgerufen.__sleep(): Wird vor der Serialisierung aufgerufen, gibt ein Array mit den Namen der zu serialisierenden Eigenschaften zurück.__wakeup(): Wird nach der Deserialisierung aufgerufen.__toString(): Ermöglicht es dem Objekt, sich wie eine Zeichenkette zu verhalten, wenn es in einem stringbasierten Kontext verwendet wird.__invoke($args): Wird aufgerufen, wenn versucht wird, das Objekt wie eine Funktion aufzurufen.__set_state(array $properties): Wird beim Exportieren eines Objekts mit der Funktionvar_export()aufgerufen.__clone(): Wird nach Abschluss der Klonierung des Objekts aufgerufen, um die Kopie zu konfigurieren.__serialize(): Wird während der Serialisierung aufgerufen, gibt ein Array mit den Daten zurück.__unserialize(array $data): Wird während der Deserialisierung aufgerufen, erhält die Daten aus__serialize().
Beispiel für die Verwendung von __construct und __destruct:
<?php
class Example {
public function __construct() {
echo "Objekt erstellt\n";
}
public function __destruct() {
echo "Objekt zerstört\n";
}
}
$obj = new Example();
unset($obj); // Zerstört das Objekt
?>
Beispiel für die Verwendung von __get und __set:
<?php
class DataStore {
private $data = [];
public function __set($name, $value) {
$this->data[$name] = $value;
}
public function __get($name) {
if (array_key_exists($name, $this->data)) {
return $this->data[$name];
}
return null; // Oder eine Ausnahme werfen
}
}
$store = new DataStore();
$store->name = "Alice"; // Ruft __set auf
echo $store->name; // Ruft __get auf
?>