PHP da konstruktor va destruktor

C

Oldingi maqolada biz sinf va ob'ektlarning asosiy tushunchalarini ko'rib chiqdik. Ushbu PHP qo'llanmasida siz PHP sinfida konstruktor va destruktorni o'rganasiz.

PHP sinfida Konstruktor va Destruktor nima?

konstruktor

Nomidan ko'rinib turibdiki, konstruksiya ob'ektni yaratadi. Konstruktorning haqiqiy ta'rifi shundan iboratki, u sinf ob'ektini ishga tushiradi.

PHP da konstruktorni qanday e'lon qilish mumkin?

PHP da konstruktorni e’lon qilish uchun konstruksiya so‘zi bilan birga ikkita pastki chiziq (__) dan foydalaning. Konstruktor nomi "konstruktor" bo'lishi kerakligiga ishonch hosil qiling.

Misol uchun

<?php
class Pet {
  public $nick_name;
  public $color;

  function __construct($name) {
    $this->nick_name = $name;
  }
  function get_name() {
    return $this->nick_name;
  }
}

$cat = new Pet("Cat");
echo $cat>get_name();
?>
  • Yuqoridagi misolda biz ikkita pastki chiziq yordamida konstruktor yaratamiz.
  • Biz konstruktorni avtomatik ravishda ishlatadigan va uni Cat bilan intializatsiya qiladigan ob'ektni yaratamiz.
  • Mushuk ob'ektida nom o'rnatish uchun set_name funksiyasini chaqirish shart emas.

Shunday qilib, konstruktor haqida yuqoridagi muhokamadan ko'rinib turibdiki, ob'ektni ishga tushirishni osonlashtiradi va buning uchun hech qanday sozlash funktsiyasini talab qilmaydi.

PHP da konstruktor va destruktor haqida ko'proq misollar

<?php
class Pet {
  public $nick_name;
  public $color;

  function __construct($name, $color) {
    $this->nick_name = $name;
    $this->color = $color;
  }
  function get_name() {
    return $this->nick_name;
  }
  function get_color() {
    return $this->color;
  }
}

$cat = new Pet("Cat", "Brown");
echo $cat->get_name();
echo "<br>";
echo $cat->get_color();
?>
  • Yuqoridagi misolda biz ikkita parametrli konstruktor yaratamiz va ushbu parametrlar bilan sinfning nick_name va rang atributlarini ishga tushiramiz.
  • Biz yangi mushuk ob'ektini yaratamiz va konstruktor tomonidan talab qilinadigan ikkita parametrni o'tkazamiz. Ob'ektni yaratish uchun u tegishli bo'lgan sinf konstruktoriga muvofiq parametrlar sonini talab qilishiga ishonch hosil qiling.
  • Ob'ektni yaratgandan so'ng, biz uni sinfning get_name va get_color setterlarini chaqirish orqali sinab ko'rdik. U mushuk ob'ektining nomini "mushuk" va rangini "jigarrang" deb chiqaradi.

Rasmiy konstruktor hujjatlariga havolani PHP da topishingiz mumkin Bu yerga.

Konstruktor haqida muhim tushuncha

OOP meros mexanizmiga imkon beradi, bu orqali bolalar sinfi asosiy sinf yoki ota-sinfni kengaytirishi mumkin. Biz buni batafsil ko'rib chiqamiz, chunki hozircha tushunchani tushunish uchun bizga uning tavsifi kerak. Agar bolalar sinfi ota-sinfni kengaytirayotgan bo'lsa va ota-klass konstruktorini o'z konstruktorida chaqirmoqchi bo'lsa, uning konstruktori ichida parent::construcor_name dan foydalaning.

Agar bola sinf o'z konstruktorini o'z ichiga olmasa, u holda asosiy yoki ota-sinf konstruktori xususiy deb e'lon qilinmasa, oddiy funktsiya sifatida meros qilib olinadi.

Konstruktorda standart parametrni qanday e'lon qilish mumkin?

Yuqorida o'qiganingizdek, konstruktor bir nechta parametrlarga ega bo'lishi mumkin, ular undan foydalanib ob'ektni yaratishda taqdim etiladi. Ammo, agar siz ob'ektni yaratishda parametrlarni majburiy bo'lmasligini xohlasangiz, konstruktor parametrining standart qiymatini o'rnatishingiz mumkin. Masalan.

public function __construct(int $x, int $y = 0) {
        $this->x = $x;
        $this->y = $y;
    }
  • Yuqoridagi misolda $y ga sukut bo'yicha 0 qiymati berilgan.
  • Agar $obj = yangi sinf (2) ob'ekti yaratilgan bo'lsa, y ning standart qiymati konstruktor tomonidan 0 ga o'rnatiladi.

Vayron qiluvchi

Destruktorning asosiy maqsadi dastur bajarilishi to'xtatilgandan yoki jarayon tugatilgandan so'ng ob'ektni yo'q qilish yoki xotiradan olib tashlashdir.

PHP da ob'ektlar tomonidan olingan xotirani bo'shatish uchun destruktorni chaqirishning hojati yo'q, chunki u skript bajarilishini to'xtatgandan so'ng barcha ob'ektlarni o'chirish uchun avtomatik ravishda destruktorni chaqiradi.

Biroq, siz destruktor qachon qo'ng'iroq qilishini va destruktor ichida qanday ishlov berishni tekshirish yoki tekshirishga yordam beradigan ba'zi xabarlarni chop etish uchun destruktorni e'lon qilishingiz mumkin.

PHP da destruktorni e'lon qilish uchun quyidagi misolga qarang

<?php
class Pet {
  public $nick_name;
  public $color;

  function __construct($name) {
    $this->nick_name = $name;
  }
  function __destruct() {
    echo "The Pet is {$this->nick_name}.";
  }
}

$cat= new Pet("cat");
?>
  • Yuqoridagi misolda. konstruktor yordamida obyekt yaratamiz.
  • Biz desctruction usuli ichida ba'zi xabarlarni chop qilamiz.
  • Skriptni ishga tushirish orqali sinab ko'ring. Destruct ichidagi xabar uchun skriptning chiqishini kuzating.

Destruktorning yana bir misoli

<?php
class Pet {
  public $nick_name;
  public $color;

  function __construct($name, $color = "brown") {
    $this->name = $nick_name;
    $this->color = $color;
  }
  function __destruct() {
    echo "The Pet is {$this->nick_name} and its color is {$this->color}.";
  }
}

$cat =  new Pet("Cat");
?>
  • Yuqoridagi misolda biz ob'ektni intializatsiya qilish uchun konstruktordan foydalanamiz. Konstruktor ikkita parametrni qabul qilishini kuzating, lekin biz uni bitta parametrdan o'tkazyapmiz, chunki konstruktor rangning standart qiymatidan foydalanadi va ob'ektning rang atributiga tayinlaydi.
  • Biz nick_name va rang bilan birga desctruct usuli ichida ba'zi xabarlarni chop qilamiz.
  • Tugatish nuqtasida skriptning chiqishini kuzating.

Bundan tashqari, siz skriptni tugatish vaqtida bajarilishi kerak bo'lgan ba'zi vazifalarni bajarish uchun destruktorni chaqirishingiz mumkin. Ma'lumotlar bazasi ulanishlarini yoki tashqi fayl oqimi ob'ektlarini yopish kabi.

Amalga oshirish nuqtai nazaridan destruktorlar oddiy ko'rinadi. Biroq, ular xotirani oqishdan himoya qilishda muhim rol o'ynaydi.

Agar PHP skripti tugatilgandan so'ng xotirada biron bir ob'ekt mavjud bo'lsa, u xotiraning oqishiga olib keladi. Bu, ayniqsa, katta hajmdagi ilovalar uchun jiddiy muammolarga olib kelishi mumkin.

Rasmiy destruktor hujjatlariga havolani PHP da topishingiz mumkin Bu yerga.

Fikr qo'shish

Repetitor tarmog'i

PHP tilini A dan Z gacha o'rganing