PHP klass va obyekt (OOP asoslari)

Assotsiativ massiv ma’lumotni saqlaydi, lekin u bilan ishlaydigan funksiyalar boshqa joyda turadi. Klass ma’lumot va uni boshqaradigan kodni bir joyga jamlaydi.

Muammo

PHP

Ikki muammo: funksiyalar ma’lumotdan ajralgan, va noto’g’ri qiymat yozilishiga hech narsa to’sqinlik qilmaydi.

Birinchi klass

PHP

-> belgisi obyekt a’zosiga murojaat qiladi: $aziz->ism, $aziz->tavsif().

constructor — yaratishda to’ldirish

PHP

__constructnew paytida avtomatik chaqiriladigan maxsus metod. Endi obyekt yaratilishi bilan to’liq holatda bo’ladi.

Qisqa yozuv (PHP 8)

PHP

Constructor parametriga public yozilsa, PHP xossani o’zi yaratadi va to’ldiradi. Uch qator o’rniga bitta — zamonaviy PHP’da shu shakl ishlatiladi.

Ko’rinish darajalari

PHP

Getter va setter

PHP

readonly (PHP 8.1) — bir marta o’rnatiladi va keyin o’zgarmaydi. Identifikator va nom kabi maydonlar uchun ideal.

static — klassning o’ziga tegishli

PHP

static a’zolar obyektga emas, klassga tegishli — new shart emas, :: bilan chaqiriladi. Ichkarida $this emas, self:: ishlatiladi.

Klass doimiylari

PHP

Doimiy const bilan e’lon qilinadi va Klass::NOM orqali o’qiladi. Bu “sehrli matn” ("yuborildi") larni kod bo’ylab tarqatmaslik uchun.

Obyektlar havola bo’yicha uzatiladi

PHP

Amaliy misol — savat

PHP

Metod return $this qaytarsa, chaqiruvlarni zanjir qilib yozish mumkin — bu “fluent interface” naqshi.

Amaliy mashq

  1. Kitob klassini yozing: nom, muallif, yil xossalari bilan;
  2. __construct qo’shib, obyekt yaratishda to’ldiring;
  3. PHP 8 qisqa yozuviga o’tkazing;
  4. yil ni private qilib, getter/setter yozing;
  5. setter’da kelajakdagi yilni rad eting;
  6. static hisoblagich bilan nechta kitob yaratilganini sanang.

Qisqacha xulosa

  • Klass — shablon, obyekt — undan yasalgan nusxa (new).
  • Xossa va metodga -> bilan murojaat qilinadi; ichkarida $this.
  • __construct obyekt yaratilganda avtomatik ishlaydi.
  • PHP 8 da constructor parametriga public yozib xossa yaratiladi.
  • private xossa faqat klass ichida ko’rinadi — inkapsulyatsiya.
  • readonly bir marta o’rnatiladi; static klassga tegishli (::).
  • Obyektlar havola bo’yicha uzatiladi — nusxa uchun clone.

Keyingi darsda meros va interfeys — klasslarni kengaytirish.

Bu dars foydali bo'ldimi?

marta ko'rildi