Junior
Mis on maagilised meetodid PHP-s?
sobes.tech AI
Vastus AI-lt
PHP-s on maagilised meetodid spetsiaalsed meetodid, mida kutsutakse automaatselt esile teatud olukordades. Nende nimed algavad kahe allkriipsuga (__).
Peamiste maagiliste meetodite nimekiri:
__construct(): Kutsutakse, kui luuakse uus objekt.__destruct(): Kutsutakse, kui objekt hävitatakse.__call($name, $arguments): Kutsutakse, kui üritate kutsuda kättesaamatut või mitteolevat objekti meetodit.__callStatic($name, $arguments): Kutsutakse, kui üritate kutsuda kättesaamatut või mitteolevat stati meetodit.__get($name): Kutsutakse, kui üritate saada kättesaamatut objekti omadust.__set($name, $value): Kutsutakse, kui üritate määrata kättesaamatut objekti omadust.__isset($name): Kutsutakse, kui kasutateisset()võiempty()kättesaamatule omadusele.__unset($name): Kutsutakse, kui kasutateunset()kättesaamatule omadusele.__sleep(): Kutsutakse enne serialiseerimist, tagastab omaduste nimede massiivi serialiseerimiseks.__wakeup(): Kutsutakse pärast deserialiseerimist.__toString(): Lubab objektil käituda nagu string, kui seda kasutatakse stringi kontekstis.__invoke($args): Kutsutakse, kui skript üritab kutsuda objekti funktsioonina.__set_state(array $properties): Kutsutakse objekti eksportimisel funktsioonigavar_export().__clone(): Kutsutakse pärast objekti kloonimise lõpetamist, kloni seadistamiseks.__serialize(): Kutsutakse serialiseerimise ajal, tagastab andmete massiivi serialiseerimiseks.__unserialize(array $data): Kutsutakse deserialiseerimise ajal, saab andmed__serialize()-st.
Näide __construct ja __destruct kasutamisest:
<?php
class Example {
public function __construct() {
echo "Objekt loodud\n";
}
public function __destruct() {
echo "Objekt hävitatud\n";
}
}
$obj = new Example();
unset($obj); // Sunni objekti hävitamine
?>
Näide __get ja __set kasutamisest:
<?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; // Või välja visata erind
}
}
$store = new DataStore();
$store->name = "Alice"; // Kutsub __set
echo $store->name; // Kutsub __get
?>