Junior
Kas yra magiški metodai PHP?
sobes.tech AI
Atsakymas iš AI
Maginiai metodai PHP yra specialūs metodai, kurie automatiškai kviečiami tam tikromis aplinkybėmis. Jų pavadinimai prasideda dviem pabraukimais (__).
Pagrindinių maginių metodų sąrašas:
__construct(): Kviečiamas kuriant naują objektą.__destruct(): Kviečiamas sunaikinus objektą.__call($name, $arguments): Kviečiamas bandant iškviesti neprieinamą arba neegzistuojantį objekto metodą.__callStatic($name, $arguments): Kviečiamas bandant iškviesti neprieinamą arba neegzistuojantį statinį metodą.__get($name): Kviečiamas bandant gauti neprieinamą objekto savybę.__set($name, $value): Kviečiamas bandant nustatyti neprieinamą objekto savybę.__isset($name): Kviečiamas naudojantisset()arbaempty()neprieinamos savybės atveju.__unset($name): Kviečiamas naudojantunset()neprieinamos savybės atveju.__sleep(): Kviečiamas prieš serializaciją, grąžina savybių pavadinimų masyvą serializacijai.__wakeup(): Kviečiamas po deserializacijos.__toString(): Leidžia objektui elgtis kaip eilutė naudojant kaip eilutės kontekste.__invoke($args): Kviečiamas, kai skriptas bando iškviesti objektą kaip funkciją.__set_state(array $properties): Kviečiamas eksportuojant objektąvar_export()funkcija.__clone(): Kviečiamas po objekto klonavimo pabaigos, skirtas klono konfigūravimui.__serialize(): Kviečiamas serializacijos metu, grąžina duomenų masyvą serializacijai.__unserialize(array $data): Kviečiamas deserializacijos metu, gauna duomenis iš__serialize().
Pavyzdys naudojant __construct ir __destruct:
<?php
class Example {
public function __construct() {
echo "Objektas sukurtas\n";
}
public function __destruct() {
echo "Objektas sunaikintas\n";
}
}
$obj = new Example();
unset($obj); // Priverstinis sunaikinimas
?>
Pavyzdys naudojant __get ir __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; // Arba išmesti išimtį
}
}
$store = new DataStore();
$store->name = "Alice"; // Iškviečia __set
echo $store->name; // Iškviečia __get
?>