0.99M
Категория: ОбразованиеОбразование

PHP - OOP

1.

2.

PHP - OOP nima?
PHP5 dan siz PHP kodini ob'ektga yo'naltirilgan uslubda ham yozishingiz mumkin.
Ob'ektga yo'naltirilgan dasturlash tezroq va bajarilishi osonroq.
OOP qisqartmasi ob'ektga yo'naltirilgan dasturlashni anglatadi.
Protsessual dasturlash - bu ma'lumotlar ustida operatsiyalarni bajaradigan protseduralar yoki funktsiyalarni
yozish, ob'ektga yo'naltirilgan dasturlash esa ma'lumotlar va funktsiyalarni o'z ichiga olgan ob'ektlarni yaratishdir.
Ob'ektga yo'naltirilgan dasturlash protsessual dasturlashdan bir qancha afzalliklarga ega:
•OOP tezroq va bajarilishi osonroq
•OOP dasturlar uchun aniq tuzilmani taqdim etadi
•OOP PHP kodini DRY "O'zingizni takrorlamang" saqlashga yordam beradi va kodni saqlash, o'zgartirish va disk
raskadrovka qilishni osonlashtiradi.
•OOP kamroq kod va qisqaroq ishlab chiqish vaqti bilan to'liq qayta foydalanish mumkin bo'lgan ilovalarni yaratish
imkonini beradi
Maslahat: "O'zingizni takrorlamang" (QURUQ) tamoyili kodning takrorlanishini kamaytirishga qaratilgan. Ilova
uchun umumiy bo'lgan kodlarni chiqarib olishingiz va ularni bitta joyga joylashtirishingiz va uni takrorlash o'rniga
ularni qayta ishlatishingiz kerak.

3.

PHP - Sinflar va ob'ektlar nima?
Sinflar va ob'ektlar ob'ektga yo'naltirilgan dasturlashning ikkita asosiy jihati hisoblanadi.
Sinf va ob'ektlar o'rtasidagi farqni ko'rish uchun quyidagi rasmga qarang:

4.

Yana bir misol:
Shunday qilib, sinf ob'ektlar uchun shablon, ob'ekt esa sinfning namunasidir.
Alohida ob'ektlar yaratilganda, ular sinfdan barcha xususiyatlar va xatti-harakatlarni meros qilib
oladi, lekin har bir ob'ekt xususiyatlar uchun turli qiymatlarga ega bo'ladi.
OOP haqida ko'proq ma'lumot olish uchun keyingi boblarga qarang.

5.

PHP OOP - Sinflar va ob'ektlar
OOP ishi
Faraz qilaylik, bizda Fruit nomli sinf bor. Meva nomi, rangi, vazni va boshqalar kabi xususiyatlarga
ega bo'lishi mumkin. Ushbu xususiyatlar qiymatlarini saqlash uchun $name, $color va $weight kabi
o'zgaruvchilarni belgilashimiz mumkin.
Alohida ob'ektlar (olma, banan va boshqalar) yaratilganda, ular sinfdan barcha xususiyatlar va xattiharakatlarni meros qilib oladi, lekin har bir ob'ekt xususiyatlar uchun turli qiymatlarga ega bo'ladi.
Sinfni aniqlang
Sinf class kalit so'z, undan keyin sinf nomi va bir juft jingalak qavs ({}) yordamida aniqlanadi . Uning
barcha xossalari va usullari qavs ichiga kiradi:

6.

Quyida biz Fruit nomli sinfni ikkita xususiyatdan ($name va $color) va $name xossasini oʻrnatish va
olish uchun set_name() va get_name() ikkita usuldan iborat deb eʼlon qilamiz:
Eslatma: Sinfda o'zgaruvchilar xossalar, funksiyalar esa metodlar deb ataladi!

7.

Ob'ektlarni aniqlang
Sinflar ob'ektlarsiz hech narsa emas! Biz bir sinfdan bir nechta
ob'ektlarni yaratishimiz mumkin. Har bir ob'ekt sinfda
belgilangan barcha xossa va usullarga ega, lekin ular har xil
xususiyat qiymatlariga ega bo'ladi.
Sinf ob'ektlari newkalit so'z yordamida yaratiladi .
Quyidagi misolda $apple va $banana Fruit sinfining misollaridir:

8.

Quyidagi misolda biz Fruit sinfiga $color xususiyatini
o'rnatish va olish uchun yana ikkita usulni qo'shamiz:

9.

PHP - $this kalit so'zi
$this kalit so'zi joriy ob'ektga ishora qiladi va faqat usullar ichida mavjud.
Quyidagi misolga qarang:

10.

Xo'sh, $name xususiyati qiymatini qayerda o'zgartirishimiz mumkin? Ikkita yo'l bor:
1. Sinf ichida (set_name() usulini qo'shib, $this dan foydalaning):

11.

2. Outside the class (by directly changing the property value):

12.

PHP - instanceof
Ob'ektning ma'lum bir sinfga tegishli ekanligini tekshirish uchun instanceof kalit so'zidan foydalanishingiz mumkin:

13.

PHP OOP - Constructor
PHP - __construct Function
Konstruktor ob'ektni yaratishda ob'ekt xususiyatlarini ishga tushirishga imkon beradi.
Agar siz __construct() funksiyasini yaratsangiz, sinfdan obyekt yaratganingizda PHP avtomatik ravishda bu funksiyani
chaqiradi.
E'tibor bering, konstruksiya funktsiyasi ikkita pastki chiziq (__) bilan boshlanadi!
Quyidagi misolda biz konstruktordan foydalanish bizni kod miqdorini kamaytiradigan set_name() usulini chaqirishdan
qutqarishini ko'ramiz:

14.

15.

Yana bir misol:

16.

PHP OOP - Destructor
PHP - __destruct funktsiyasi
Ob'ekt yo'q qilinganda yoki skript to'xtatilganda yoki undan chiqqanda destruktor chaqiriladi.
Agar siz __destruct() funksiyasini yaratsangiz, PHP skript oxirida ushbu funksiyani avtomatik ravishda chaqiradi.
E'tibor bering, yo'q qilish funktsiyasi ikkita pastki chiziq (__) bilan boshlanadi!
Quyidagi misolda siz sinfdan ob'ekt yaratganingizda avtomatik ravishda chaqiriladigan __construct() funksiyasi va skript
oxirida avtomatik ravishda chaqiriladigan __destruct() funksiyasi mavjud:

17.

18.

Yana bir misol:
Maslahat: Konstruktorlar va destruktorlar kod miqdorini kamaytirishga yordam bergani uchun ular juda foydali!

19.

PHP OOP - Kirish modifikatorlari
PHP - Kirish modifikatorlari
Xususiyatlar va usullarda kirish o'zgartirish moslamalari bo'lishi mumkin, ular qayerdan foydalanish mumkinligini nazorat qiladi.
Uchta kirish modifikatori mavjud:
public - mulk yoki usulga hamma joydan kirish mumkin. Bu standart
protected - xususiyat yoki usulga sinf ichida va shu sinfdan olingan sinflar orqali kirish mumkin
private - xususiyat yoki usulga FAQAT sinf ichida kirish mumkin
Quyidagi misolda biz uchta xususiyatga (nom, rang va vazn) uchta turli xil kirish modifikatorlarini qo'shdik. Bu yerda, agar siz nom
xususiyatini o'rnatishga harakat qilsangiz, u yaxshi ishlaydi (chunki name xususiyati ommaviydir va unga hamma joydan kirish
mumkin). Biroq, agar siz rang yoki vazn xususiyatini belgilashga harakat qilsangiz, bu halokatli xatolikka olib keladi (chunki rang va
vazn xususiyati

20.

Keyingi misolda biz ikkita funktsiyaga kirish modifikatorlarini qo'shdik. Bu yerda, agar siz set_color() yoki set_weight()
funksiyalarini chaqirishga harakat qilsangiz, bu halokatli xatoga olib keladi (chunki ikkita funksiya himoyalangan va shaxsiy
deb hisoblanadi), hatto barcha xususiyatlar ochiq bo‘lsa ham:

21.

22.

PHP OOP - Inheritance
PHP - Inheritance nima?
OOPda Inheritance = Sinf boshqa sinfdan kelib chiqqanda.
Bolalar sinfi barcha umumiy va himoyalangan xususiyatlar va usullarni ota-sinfdan meros qilib oladi. Bundan tashqari, u o'z
xususiyatlari va usullariga ega bo'lishi mumkin.
Inheritance langan sinf kengaytirilgan kalit so'z yordamida aniqlanadi.

23.

Keling, bir misolni ko'rib chiqaylik:
Qulupnay sinfi Fruit sinfidan meros bo'lib
qolgan.
Bu qulupnay klassi meros tufayli umumiy
$name va $color xususiyatlaridan hamda Fruit
sinfidagi umumiy __construct() va intro()
usullaridan foydalanishi mumkinligini
anglatadi.
Qulupnay sinfining ham o'ziga xos usuli bor:
message().

24.

PHP - Class Constants
E'lon qilingandan keyin Constant larni o'zgartirib bo'lmaydi.
Agar sinf ichidagi ba'zi doimiy ma'lumotlarni aniqlash kerak bo'lsa, sinf konstantalari foydali bo'lishi mumkin.
Sinf konstantasi sinf ichida const kalit so'zi bilan e'lon qilinadi.
Sinf konstantalari katta-kichik harflarga sezgir. Shu bilan birga, doimiylarni barcha katta harflar bilan nomlash tavsiya etiladi.
Biz sinf nomidan so'ng doirani aniqlash operatori (::) va undan keyin doimiy nom yordamida sinfdan tashqaridagi
konstantaga kirishimiz mumkin, masalan:

25.

26.

Yoki sinf ichidan konstantaga self kalit so‘zidan so‘ng miqyosni aniqlash operatori (::) va undan keyin doimiy nom yordamida
kirishimiz mumkin, masalan:
English     Русский Правила