Junior
PHP'da sehrli metodlar nima?
sobes.tech AI
AIdan javob
PHP'dagi sehrli metodlar, muayyan sharoitlarda avtomatik ravishda chaqiriladigan maxsus metodlardir. Ularning nomlari ikki chiziq (__) bilan boshlanadi.
Asosiy sehrli metodlarning ro'yxati:
__construct(): Yangi obyekt yaratilganda chaqiriladi.__destruct(): Ob'ekt yo'q qilinayotganda chaqiriladi.__call($name, $arguments): Ob'ektning kirish mumkin bo'lmagan yoki mavjud bo'lmagan metodini chaqirishga urinishda chaqiriladi.__callStatic($name, $arguments): Statik metodni chaqirishga urinishda chaqiriladi, u mavjud emas yoki kirish mumkin emas.__get($name): Kirish mumkin bo'lmagan xususiyat qiymatini olishga urinishda chaqiriladi.__set($name, $value): Kirish mumkin bo'lmagan xususiyatga qiymat belgilashga urinishda chaqiriladi.__isset($name):isset()yokiempty()bilan kirish mumkin bo'lmagan xususiyat ustida ishlashda chaqiriladi.__unset($name):unset()bilan kirish mumkin bo'lmagan xususiyat ustida ishlashda chaqiriladi.__sleep(): Serializatsiya oldidan chaqiriladi, serializatsiya qilinadigan xususiyatlar nomlarini o'z ichiga olgan massivni qaytaradi.__wakeup(): Deserializatsiya qilgandan so'ng chaqiriladi.__toString(): Ob'ektni satr sifatida ishlashiga imkon beradi.__invoke($args): Skript ob'ektni funksiya sifatida chaqirishga uringanida chaqiriladi.__set_state(array $properties):var_export()funksiyasi bilan ob'ektni eksport qilishda chaqiriladi.__clone(): Ob'ekt klonlash tugagach chaqiriladi, klonni sozlash uchun.__serialize(): Serializatsiya davomida chaqiriladi, serializatsiya uchun ma'lumotlar massivini qaytaradi.__unserialize(array $data): Deserializatsiya davomida chaqiriladi,__serialize()dan ma'lumotlarni oladi.
__construct va __destructdan foydalanish misollari:
<?php
class Example {
public function __construct() {
echo "Ob'ekt yaratildi\n";
}
public function __destruct() {
echo "Ob'ekt yo'q qilindi\n";
}
}
$obj = new Example();
unset($obj); // Ob'ektni majburan yo'q qilish
?>
__get va __setdan foydalanish misollari:
<?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; // Yoki istisno chiqarish
}
}
$store = new DataStore();
$store->name = "Alice"; // __set chaqiriladi
echo $store->name; // __get chaqiriladi
?>