PHP da kirish modifikatorlari

PHP da konstruktorlar va destruktorlar
PHP OOP da meros

PHPda kirish modifikatorlari ob'ektga yo'naltirilgan dasturlashning (OOP) muhim qismidir. Ular sinf o'zgaruvchilari yoki usullari doirasini va ularga qanday kirish mumkinligini aniqlaydi. Ushbu postda biz PHP-da kirish modifikatorlarining har xil turlarini ko'rib chiqamiz va ulardan qanday foydalanishga misollar keltiramiz.

PHP da kirish modifikatorlari turlari

PHP da kirish modifikatorlari umumiy, shaxsiy yoki himoyalangan deb tasniflanadi.

  • Ommaviy: Ommaga o'rnatilgan usul yoki atributga hamma joyda kirish mumkin. Bu PHP da standart kirish modifikatoridir.
  • Private: Maxfiy deb o'rnatilgan usul yoki atributga faqat u yaratilgan sinf ichida kirish mumkin.
  • Himoyalangan: Himoyalangan deb o'rnatilgan usul yoki atributga u yaratilgan sinf ichida ham, shu sinfdan meros bo'lgan sinflarda ham kirish mumkin.

misollar

class Person{
  public $name;
  protected $age;
  private $height;
}

$x= new Person();
$x->name = 'John'; // OK
$x->age= '32'; // ERROR
$x->height= '5.4'; // ERROR

Yuqoridagi misolda biz uchta atributga ega "Shaxs" sinfini aniqlaymiz, ularning har biri alohida kirish modifikatoriga ega. “Nom” atributi ochiq, “yosh” atributi himoyalangan va “balandlik” atributi shaxsiydir. Biz sinfdan tashqarida "nom" atributiga kirishga va unga qiymat qo'shishga harakat qilsak, hamma narsa yaxshi ishlaydi. Biroq, sinfdan tashqarida "yosh" va "balandlik" xususiyatlariga qiymat qo'shishga urinish halokatli xatoga olib keladi.

Ommaviy, xususiy va himoyalangan usullar

class Person{
  public $name;
  public $age;
  public $height;

  function set_name($n) {  // a public function (default)
    $this->name = $n;
  }
  protected function set_age($a) { // a protected function
    $this->age = $a;
  }
  private function set_height($h) { // a private function
    $this->height = $h;
  }
}

$person = new Person();
$person->set_name('John'); // OK
$person->set_age('26'); // ERROR
$person->set_height('5.4'); // ERROR

Yuqoridagi misolda biz har biri alohida kirish modifikatoriga ega bo'lgan uchta usul bilan "Shaxs" sinfini quramiz. "O'rnatilgan nom" usuli ommaviy, "to'langan yosh" usuli himoyalangan va "o'rnatilgan balandlik" usuli shaxsiydir. Biz sinfdan tashqaridan "to'siq nomi" funksiyasini chaqirishga harakat qilsak, u yaxshi ishlaydi. Biz sinfdan tashqaridan "belgilangan yosh" va "bo'yni belgilash" usullarini chaqirishga harakat qilsak, biz halokatli xatoga duch kelamiz.

Kengaytirilgan kirish modifikatorlari: mavhum va yakuniy

PHP oddiy kirish modifikatorlariga qo'shimcha ravishda "abstrakt" va "yakuniy" deb nomlangan murakkab kirish modifikatorlarini taqdim etadi.

  • Mavhum kirish modifikatori faqat sinflar va usullarda ishlatilishi mumkin. U sinf rejasini yaratish uchun ishlatiladi, ammo sinfni yaratib bo'lmaydi. Abstrakt usullar - bu mavhum sinfdan meros bo'lgan har bir sinf amalga oshirishi kerak bo'lgan usullardir.
  • Sinflar, usullar va xususiyatlarning barchasiga oxirgi kirish modifikatori berilishi mumkin. U sinf yoki usulni kengaytirish yoki bekor qilishni taqiqlash uchun ishlatiladi.

misollar

abstract class Bike {

    private $maxSpeed = 80;

    // Simple method
    public function drivingSpeed() {
        return "Driving at " . $this->maxSpeed . " kilometer/hour";
    }

    // Abstract method
    abstract public function drive();
}

class Police extends Bike {

    public function drive() {
        return "Driving out of speed limit.";
    }

}

$bike= new Police();
echo $bike->drivingSpeed();

Yuqoridagi misolda biz quramiz mavhum "Drive()" deb nomlangan mavhum funktsiyaga ega "Velosiped" nomli sinf. Keyinchalik biz "Politsiya" nomli yangi sinfni quramiz uzayadi "Velosiped" klassi va "drive()" funktsiyasini amalga oshiradi. Buning o'rniga biz "Police" sinfidan foydalanamiz, chunki biz mavhum sinf ob'ektini qura olmaymiz.

Nihoyat, kirish modifikatorlari PHPda OOP ning muhim qismi bo'lib, sinf o'zgaruvchilari yoki funksiyalari doirasini cheklash uchun ishlatiladi. Kirish modifikatorlarini tushunish va ulardan samarali foydalanish xavfsizroq va qo'llab-quvvatlanadigan kodni ishlab chiqishga yordam beradi.

Savol-javob

Savol: Kirish modifikatorlari nima?
Javob: Kirish modifikatorlari sinf o'zgaruvchilari yoki usullari doirasini, shuningdek, ularga kirish mumkin bo'lgan joyni belgilaydi. PHP da kirish modifikatorlari umumiy, shaxsiy yoki himoyalangan deb tasniflanadi.

Savol: Standart kirish modifikatori nima?
Javob: PHP standart kirish modifikatori ommaviydir. Agar siz PHP sinfida usul yoki atribut yaratishda kirish modifikatorini taqdim qilmasangiz, u sukut bo'yicha ommaviy qilib o'rnatiladi.

Savol: Shaxsiy va himoyalangan kirish modifikatorlari o'rtasidagi farq nima?
Javob: Xususiy usul yoki atributga faqat uni yaratgan sinf ichida kirish mumkin, lekin himoyalangan usul yoki atributga uni yaratgan sinf ichida ham, shu sinfdan meros bo‘lib qolgan sinflarda ham kirish mumkin.

Savol: PHP da mavhum kirish modifikatoridan foydalanishga misol keltira olasizmi?

abstract class Bike {
    private $maxSpeed = 80;
    abstract public function drive();
}
class Police extends Bike {
    public function drive() {
        return "Driving out of speed limit.";
    }
}

Yuqoridagi misolda biz “drive()” deb nomlangan mavhum funksiyaga ega “Velosiped” nomli mavhum sinfni yaratamiz. Keyinchalik biz "Police" nomli yangi sinfni quramiz, u "Velosiped" sinfini kengaytiradi va "drive()" funktsiyasini amalga oshiradi. Buning o'rniga biz "Police" sinfidan foydalanamiz, chunki biz mavhum sinf ob'ektini qura olmaymiz.

Savol: Yakuniy kirish modifikatori qanday ishlaydi?
Javob: Yakuniy kirish modifikatori sinflar, usullar va xususiyatlarga qo'llanilishi mumkin. U sinfni kengaytirish yoki usulni bekor qilishning oldini olish uchun ishlatiladi. Bu shuni anglatadiki, yakuniy sinfdan meros bo'lgan har qanday sinf kengaytirilmaydi va yakuniy deb belgilangan har qanday usulni bekor qilib bo'lmaydi.

Mashqlar:

  1. PHP da standart kirish modifikatori nima?
  2. PHP-da shaxsiy va himoyalangan kirish modifikatorlari o'rtasidagi farq nima?
  3. PHP da mavhum kirish modifikatoridan foydalanishga misol keltiring.
  4. Yakuniy kirish modifikatori qanday ishlaydi?
  5. Mavhum sinf ob'ektini yarata olasizmi? Nima uchun yoki nima uchun?
  6. Bolalar sinfidagi yakuniy usulni bekor qila olasizmi? Nima uchun yoki nima uchun?
  7. Shaxsiy atributga u yaratilgan sinfdan tashqarida qiymat bera olasizmi? Nima uchun yoki nima uchun?
  8. Himoyalangan usulga u yaratilgan sinfdan tashqarida kirish mumkinmi? Nima uchun yoki nima uchun?

Javoblar:

  1. PHP da standart kirish modifikatori ommaviydir.
  2. PHP-dagi xususiy usul yoki atributga faqat u yaratilgan sinf ichida kirish mumkin, himoyalangan usul yoki atributga esa u yaratilgan sinf ichida, shuningdek, shu sinfdan meros qolgan sinflarda kirish mumkin.
abstract class Bike {
    private $maxSpeed = 80;
    abstract public function drive();
}
class Police extends Bike {
    public function drive() {
        return "Driving out of speed limit.";
    }
}

4. Yakuniy kirish modifikatori sinflar, usullar va xususiyatlar uchun qo'llanilishi mumkin. U sinfni kengaytirish yoki usulni bekor qilishning oldini olish uchun ishlatiladi.
5. Yo'q, biz mavhum sinf ob'ektini yarata olmaymiz, chunki abstrakt sinf boshqa sinflar uchun sxema bo'lib xizmat qiladi va ob'ektni yaratish uchun konstruktorga ega emas.
6. Yo‘q, biz bolalar sinfidagi yakuniy usulni bekor qila olmaymiz, chunki u yakuniy deb belgilangan va uni bekor qilib bo‘lmaydi.
7. Yo‘q, biz uni yaratgan sinfdan tashqari xususiy atributga qiymat bera olmaymiz, chunki atribut faqat sinf ichida mavjud.
8. Yo'q, himoyalangan usulga uni yaratgan sinfdan tashqarida kirish mumkin emas, lekin unga shu sinfdan kelib chiqadigan sinflar kirishi mumkin.

PHP da konstruktorlar va destruktorlar
PHP OOP da meros
yaqin

PHP haqida yangiliklardan xabardor bo'ling!

Biz spam yubormaymiz!

en English
X
Top o'ting