Junior
Mi a mágikus módszerek a PHP-ben?
sobes.tech MI
Válasz az MI-től
A PHP mágikus módszerei speciális módszerek, amelyeket bizonyos körülmények között automatikusan meghívnak. Nevük két alsó vonallal (__) kezdődik.
A fő mágikus módszerek listája:
__construct(): Új objektum létrehozásakor hívódik meg.__destruct(): Objektum megsemmisítésekor hívódik meg.__call($name, $arguments): Híváskor, amikor egy nem elérhető vagy nem létező metódust próbálunk meghívni.__callStatic($name, $arguments): Statikus metódus hívásakor, amikor nem elérhető vagy nem létező metódust próbálunk meghívni.__get($name): Egy nem elérhető tulajdonság értékének lekérésekor hívódik meg.__set($name, $value): Egy nem elérhető tulajdonság értékének beállításakor hívódik meg.__isset($name):isset()vagyempty()használatakor nem elérhető tulajdonságon.__unset($name):unset()használatakor nem elérhető tulajdonságon.__sleep(): Szerializálás előtt hívódik meg, visszaad egy tömböt a szerializálandó tulajdonságnevekkel.__wakeup(): Deszerializálás után hívódik meg.__toString(): Lehetővé teszi, hogy az objektum stringként viselkedjen, amikor szöveges kontextusban használják.__invoke($args): Híváskor, amikor az objektumot függvényként próbálják meghívni.__set_state(array $properties): Az objektum exportálásakor avar_export()függvénnyel.__clone(): Klónozás után hívódik meg, a klón konfigurálására.__serialize(): Szerializáláskor hívódik meg, adatokat tartalmazó tömböt ad vissza.__unserialize(array $data): Deszerializáláskor hívódik meg, a__serialize()által adott adatokat fogadja.
Példák a __construct és __destruct használatára:
<?php
class Example {
public function __construct() {
echo "Objektum létrehozva\n";
}
public function __destruct() {
echo "Objektum megsemmisítve\n";
}
}
$obj = new Example();
unset($obj); // Kényszerített objektum megsemmisítés
?>
Példák a __get és __set használatára:
<?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; // Vagy kivétel dobása
}
}
$store = new DataStore();
$store->name = "Alice"; // __set meghívása
echo $store->name; // __get meghívása
?>