Junior
Milyen mágikus osztálymódszereket ismersz?
sobes.tech MI
Válasz az MI-től
A PHP mágikus módszerei speciális módszerek, amelyeket automatikusan meghívnak bizonyos események során. Két aláhúzásjel (__) kezdődik.
Fő mágikus módszerek:
__construct(): Amikor példányosítunk egy osztályt, ez a módszer hívódik meg. Az objektum inicializálására szolgál.__destruct(): Amikor egy objektum törlésre kerül vagy a szkript befejeződik, ez a módszer hívódik meg. Erőforrások felszabadítására használható.__call(string $name, array $arguments): Híváskor, amikor egy nem elérhető vagy nem létező metódust próbálunk meghívni.__callStatic(string $name, array $arguments): Statikus módszer hívásakor, amikor nem elérhető vagy nem létező statikus metódust próbálunk meghívni.__get(string $name): Amikor egy nem elérhető vagy nem létező tulajdonsághoz próbálunk hozzáférni.__set(string $name, mixed $value): Amikor egy nem elérhető vagy nem létező tulajdonságnak értéket próbálunk adni.__isset(string $name): Amikorisset()vagyempty()függvényeket használunk egy nem elérhető vagy nem létező tulajdonságon.__unset(string $name): Amikorunset()-et használunk egy nem elérhető vagy nem létező tulajdonságon.__serialize(): Az objektum serializálása előtt hívódik meg aserialize()-el. Visszaad egy tömböt a serializálandó tulajdonságokról.__unserialize(array $data): Deserializáláskor hívódik meg aunserialize()-el. Egy tömböt kap az adatokkal a tulajdonságok helyreállításához.__toString(): Lehetővé teszi, hogy az objektumot szövegként kezeljük. Hívódik, amikor megpróbáljuk szövegként kiírni (pl.echo). Egy stringet kell visszaadnia.__invoke(...$arguments): Lehetővé teszi, hogy az objektumot függvényként kezeljük. Hívódik, amikor megpróbáljuk függvényként meghívni.__set_state(array $properties): Avar_export()-tel történő objektum helyreállításakor hívódik meg. Egy tömböt kap az objektum tulajdonságairól.__debugInfo(): Hívódik, amikorvar_dump()-ot használunk egy objektumon. Egy tömböt kell visszaadnia a hibakereséshez.
Példák a __construct és __toString használatára:
<?php
class MyClass {
private $name;
public function __construct(string $name) {
$this->name = $name;
}
public function __toString(): string {
return "Objektum neve: " . $this->name;
}
}
$obj = new MyClass("Teszt");
echo $obj; // Meghívja a __toString()-et
Példák a __get és __set használatára:
<?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; // Vagy kivétel dobása
}
}
$obj = new MyClass();
$obj->prop1 = "Érték 1"; // Meghívja a __set()-et
echo $obj->prop1; // Meghívja a __get()-et