Sobes.tech
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() yoki empty() 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
?>