PHP da konstruktorlar va destruktorlar

PHP-da OOP: Yangi boshlanuvchilar uchun qo'llanma
PHP da kirish modifikatorlari

PHP, boshqa ko'plab ob'ektga yo'naltirilgan dasturlash tillari kabi, sinf konstruktorlari va destruktorlarini qo'llab-quvvatlaydi.

Konstruktor bu a o'ziga xos funktsiya sinf ob'ekti yaratilganda avtomatik ravishda chaqiriladi. Konstruktorning asosiy vazifasi ob'ekt xususiyatlarini ishga tushirish va ularni standart qiymatlarga yoki ob'ekt yaratilganda argument sifatida taqdim etilgan qiymatlarga o'rnatishdan iborat. Konstruktorlar PHP da ikki osti chiziq (__) sintaksisi va “konstruksiya” iborasi bilan e’lon qilinadi. “__construct” konstruktor usulining nomi bo‘lishi kerak. Mana “Pet” sinfida ishlayotgan konstruktorning misoli:

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("Whiskers", "Black");
echo $cat->get_name();
echo "<br>";
echo $cat->get_color();

Yangi “Pet” obyektini yaratib, “Whiskers” va “Black” parametrlarini parametr sifatida qo‘yganimizda, konstruktor obyektning “nick name” va “rang” xususiyatlarini mos ravishda “Whiskers” va “Black” qilib o‘rnatadi. Keyinchalik bu atributlarning qiymatlari “nom olish” va “rang olish” usullari yordamida olinishi mumkin.

Boshqa tomondan, buzg'unchi - bu ob'ekt yo'q qilingan yoki xotiradan o'chirilganda chaqiriladigan maxsus protsedura. Uning asosiy vazifasi ob'ekt foydalanadigan resurslarni bo'shatishdir, masalan, ma'lumotlar bazasi ulanishlarini tugatish yoki xotirani tozalash. Destruktorlar PHP da ikki osti chiziq (__) sintaksisi va "yo'q qilish" so'zi bilan e'lon qilinadi. "__destruct" destruktor usulining nomi bo'lishi kerak. Mana, harakatdagi sinf destruktoriga misol:

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;
  }
  function __destruct() {
    echo "Goodbye, " . $this->nick_name . "!<br>";
  }
}

$cat = new Pet("Whiskers", "Black");
echo $cat->get_name();
echo "<br>";
echo $cat->get_color();

Ushbu misolda, skript tugatilganda yoki "Pet" ob'ekti yo'q qilinganda, destruktor darhol chaqiriladi va "Xayr, mo'ylovlar!" ekranda.

PHPda konstruktorlar va destruktorlar qo'lda bajarilmasligini tushunish juda muhim; ob'ekt yaratilganda yoki yo'q qilinganda ular avtomatik ravishda chaqiriladi. Konstruktor argumentlari uchun standart qiymatlarni ham belgilashingiz mumkin. Misol uchun, agar siz konstruktorning ikkinchi parametri ixtiyoriy bo'lishini istasangiz, quyidagi kabi standart qiymatni belgilashingiz mumkin:

function __construct($name,$color = "Black") {
$this->nick_name = $name;
$this->color = $color;
}

Ushbu misolda, agar yo'q bo'lsa qiymati ob'ekt yaratilganda ikkinchi parametr taqdim etilganligi uchun "rang" xususiyati avtomatik ravishda "Qora" ga o'rnatiladi.

Shuni ham ta'kidlash kerakki, agar bolalar sinfi ota-onalar sinfini kengaytirsa va xohlasa chaqirish ota-sinf konstruktori o'z konstruktorida bo'lsa, buning uchun "parent::__construct()" sintaksisidan foydalanishi mumkin. Agar bolalar sinfining o'z konstruktori bo'lmasa, ota-klass konstruktori, agar u xususiy deb e'lon qilinmasa, oddiy funksiya sifatida meros qilib olinadi.

Qisqa bayoni; yakunida, konstruktorlar va destruktorlar PHP da ob'ektlar uchun resurslarni ishga tushirish va chiqarish uchun qo'llaniladigan maxsus usullardir. Ular ob'ekt yaratilganda yoki yo'q qilinganda avtomatik ravishda chaqiriladi va ob'ekt xususiyatlari uchun standart qiymatlarni o'rnatish yoki boshqa vazifalarni bajarish uchun ishlatilishi mumkin.

Savol-javob

Savol: PHP da konstruktor nima?

Javob: Konstruktor - bu sinf ob'ekti yaratilganda avtomatik ravishda chaqiriladigan o'ziga xos funktsiya. Uning asosiy vazifasi ob'ekt xususiyatlarini ishga tushirish, ularni standart qiymatlarga yoki ob'ekt yaratilganda argument sifatida taqdim etilgan qiymatlarga o'rnatishdir. Konstruktorlar "konstruksiya" so'zi bilan birga ikki osti chiziq (__) sintaksisi yordamida ko'rsatiladi va konstruktor usulining nomi "__konstruksiya" bo'lishi kerak.

Savol: PHP da konstruktor qanday e'lon qilinadi?
Javob: PHP da konstruktorlar ikki osti chiziq (__) sintaksisi va “konstruksiya” iborasi bilan e’lon qilinadi. “__construct” konstruktor usulining nomi bo‘lishi kerak.

Savol: PHP da destruktorning maqsadi nima?
Javob: Ob'ekt yo'q qilinganda yoki xotiradan o'chirilganda, destruktor usuli avtomatik ravishda chaqiriladi. Uning asosiy vazifasi ob'ekt foydalanadigan resurslarni bo'shatishdir, masalan, ma'lumotlar bazasi ulanishlarini tugatish yoki xotirani tozalash.

Savol: PHP da destruktor qanday e'lon qilinadi?
Javob: PHP da destruktorlar “destruct” so‘zi bilan birga ikki osti chiziq (__) sintaksisi yordamida e’lon qilinadi. Destruktor usulining nomi "__destruct" bo'lishi kerak.

Savol: PHP da konstruktorlar va destruktorlarni qo‘lda chaqirishimiz kerakmi?
Javob: Yo'q, ob'ekt yaratilganda yoki yo'q qilinganda konstruktorlar va destruktorlar avtomatik ravishda chaqiriladi va biz ularni qo'lda chaqirishimiz shart emas.

Savol: PHP da konstruktor parametrlari uchun standart qiymatlarni o‘rnatishimiz mumkinmi?
Javob: Ha, biz konstruktor argumentlari uchun standart qiymatlarni o'rnatish uchun PHP dan foydalanishimiz mumkin. Misol uchun, agar siz konstruktorning ikkinchi parametri ixtiyoriy bo'lishini istasangiz, quyidagi kabi standart qiymatni belgilashingiz mumkin:

function __construct($name, $color = "Black") {
    $this->nick_name = $name;
    $this->color = $color;
  }

Savol: Qanday qilib bolalar sinfi PHP da ota-klass konstruktorini chaqirishi mumkin?
Javob: Agar bolalar sinfi ota-sinfni kengaytirsa va ota-klass konstruktorini o'z konstruktorida chaqirmoqchi bo'lsa, u buni amalga oshirish uchun "parent::__construct()" sintaksisidan foydalanishi mumkin.

Mashqlar:

  1. “Maksimal”, “model” va “yil” xususiyatlariga ega “Avtomobil” sinfini va yangi obyekt yaratilganda ushbu qiymatlarni o‘rnatuvchi konstruktorni yarating.
  2. “Avtomobil” sinfiga “getDetails” deb nomlangan usul qo‘shing, u avtomobilning markasi, modeli va yilini qator sifatida qaytaradi.
  3. "Avtomobil" sinfini kengaytiruvchi va "batteryLife" uchun qo'shimcha xususiyatga ega bo'lgan "ElectricCar" deb nomlangan bolalar sinfini va bu qiymatni o'rnatuvchi konstruktorni yarating.
  4. "ElectricCar" sinfiga "batteryLife" xususiyatining qiymatini qaytaradigan "getBatteryLife" deb nomlangan usulni qo'shing.
  5. "ElectricCar" sinfining ob'ektini yarating va avtomobil tafsilotlari va batareya quvvatini ko'rsatish uchun siz yaratgan usullardan foydalaning.

Javoblar:

1.

class Car {
  public $make;
  public $model;
  public $year;

  function __construct($make, $model, $year) {
    $this->make = $make;
    $this->model = $model;
    $this->year = $year;
  }
}

2.

class Car {
  public $make;
  public $model;
  public $year;

  function __construct($make, $model, $year) {
    $this->make = $make;
    $this->model = $model;
    $this->year = $year;
  }
  function getDetails() {
    return $this->make . " " . $this->model . " " . $this->year;
  }
}

3.

class ElectricCar extends Car {
  public $batteryLife;

  function __construct($make, $model, $year, $batteryLife) {
    parent::__construct($make, $model, $year);
    $this->batteryLife = $batteryLife;
  }
}

4.

class ElectricCar extends Car {
  public $batteryLife;

  function __construct($make, $model, $year, $batteryLife) {
    parent::__construct($make, $model, $year);
    $this->batteryLife = $batteryLife;
  }
  function getBatteryLife() {
    return $this->batteryLife;
  }
}

5.

$electricCar = new ElectricCar("Tesla", "Model S", 2022, 300);
echo $electricCar->getDetails();
echo "<br>";
echo "Battery Life: " . $electricCar->getBatteryLife();
PHP-da OOP: Yangi boshlanuvchilar uchun qo'llanma
PHP da kirish modifikatorlari
yaqin

PHP haqida yangiliklardan xabardor bo'ling!

Biz spam yubormaymiz!

en English
X
Top o'ting