Ob'ektga yo'naltirilgan dasturlash (OOP) - bu sinflar misollari bo'lgan ob'ektlar yordamida ma'lumotlar va xatti-harakatlarni ifodalovchi va boshqaradigan dasturlash paradigmasi. PHP o'rnatilgan funktsiyalar va tuzilmalar to'plami orqali OOP-ni qo'llab-quvvatlaydi.
PHP-dagi sinf ob'ektlarni qurish rejasidir. Sinf ob'ektni belgilaydi xususiyatlari (shuningdek, a'zo o'zgaruvchilari yoki atributlari sifatida ham tanilgan) va usullar (a'zo funktsiyalari yoki xatti-harakatlari sifatida ham tanilgan). "Var" va "funktsiya" atamalari mos ravishda xususiyatlar va usullarni belgilash uchun sinf ichida qo'llaniladi. PHP asosiy sinfiga misol:
class Person {
var $name;
var $age;
function setName($name) {
$this->name = $name;
}
function getName() {
return $this->name;
}
function setAge($age) {
$this->age = $age;
}
function getAge() {
return $this->age;
}
}
Ushbu misoldagi "Shaxs" klassi ikkita xususiyatni o'z ichiga oladi: $name va $age. Shuningdek, to'rtta usul mavjud: setName(), getName(), setAge() va getAge(). Ushbu usullar qo'llaniladi o'rnatilgan va mulk qiymatlarini oling. Shuni ta'kidlash kerakki, "bu" atamasi sinf ichidagi joriy ob'ektga ishora qiladi.
Sinf ob'ektini yaratish uchun biz "yangi" kalit so'zidan keyin sinf nomidan foydalanamiz. Mana bir misol:
$person = new Person();
Ob'ektga ega bo'lganimizdan so'ng, biz xususiyatlarning qiymatlarini o'rnatish va olish uchun sinf usullaridan foydalanishimiz mumkin:
$person->setName("John Doe");
$person->setAge(30);
echo $person->getName(); // prints "John Doe"
echo $person->getAge(); // prints "30"
Meros - ob'ektga yo'naltirilgan dasturlashning asosiy tushunchasi bo'lib, u bir sinfning atributlari va funktsiyalarini boshqasidan meros qilib olish imkonini beradi. Subklass yoki olingan sinf boshqa sinfdan meros bo'lib qolgan sinfdir, u meros qilib olgan sinf esa yuqori sinf yoki asosiy sinf sifatida tanilgan.
Mana, “Shaxs” yuqori sinfidan kelib chiqqan “Talaba” kichik sinfiga misol:
class Student extends Person {
var $studentId;
function setStudentId($id) {
$this->studentId = $id;
}
function getStudentId() {
return $this->studentId;
}
}
Ushbu misolda Student klassi Person sinfining barcha xossalari va usullarini meros qilib oladi va unga yangi $studentId xossasini va setStudentId() va getStudentId() usullarini qo'shadi.
$student = new Student();
$student->setName("Jane Doe");
$student->setAge(20);
$student->setStudentId("123456");
echo $student->getName(); // prints "Jane Doe"
echo $student->getAge(); // prints "20"
echo $student->getStudentId(); // prints "123456"
interfeyslarni sinf amalga oshirishi kerak bo'lgan usullar to'plamini belgilaydigan shartnoma turi. Interfeys kalit so'zi ni aniqlash uchun ishlatiladi Interfeys, va u usul organlarini emas, balki faqat usul imzolarini o'z ichiga olishi mumkin.
Shakllar uchun usullar to'plamini belgilaydigan "Shape" interfeysiga misol:
interface Shape {
public function getArea();
public function getPerimeter();
}
Interfeysni amalga oshiradigan sinf interfeysda ko'rsatilgan usullarni belgilashi kerak. Shakl interfeysini amalga oshiradigan "To'rtburchak" sinfiga misol:
class Rectangle implements Shape {
private $width;
private $height;
public function __construct($width, $height) {
$this->width = $width;
$this->height = $height;
}
public function getArea() {
return $this->width * $this->height;
}
public function getPerimeter() {
return 2 * ($this->width + $this->height);
}
}
Bu misolda Rectangle klassi Shape interfeysining getArea() va getPerimeter() funksiyalarini amalga oshiradi. Endi biz Rectangle obyektini qurishimiz va undan foydalanishimiz mumkin usullari:
$rectangle = new Rectangle(5, 10);
echo $rectangle->getArea(); // prints "50"
echo $rectangle->getPerimeter(); // prints "30"
Darslar, ob'ektlar, meros olish, va interfeyslar PHPda OOP ning asosiy g'oyalari hisoblanadi. Dasturiy ta'minotni modulliroq, boshqariladigan va qayta foydalanish mumkin bo'lgan qilish uchun PHPda qo'llanilishi mumkin bo'lgan ko'plab qo'shimcha murakkab printsiplar mavjud, masalan, abstrakt sinflar, polimorfizm, inkapsulyatsiya va boshqalar.
Shuni yodda tutish kerakki, OOP PHPda faqat bitta paradigmadir; PHP kodini yaratishning boshqa ko'plab usullari mavjud; Shunga qaramay, OOP keng qo'llaniladi va hozirgi PHP rivojlanishida tavsiya etilgan amaliyot hisoblanadi.
Savol-javob
Savol: Ob'ektga yo'naltirilgan dasturlash (OOP) nima?
Javob: OOP - bu sinflar misollari bo'lgan ob'ektlar yordamida ma'lumotlar va xatti-harakatlarni ifodalovchi va boshqaradigan dasturlash paradigmasi.
Savol: PHP OOP ni qo'llab-quvvatlaydimi?
Javob: Ha, PHP server tomonidagi mashhur skript tili boʻlib, u OOPni yoqish uchun oʻrnatilgan funksiya va funksiyalarni oʻz ichiga oladi.
Savol: PHP da ob'ektni qanday yarataman?
Javob: Sinf ob'ektini yaratish uchun biz "yangi" kalit so'zdan keyin sinf nomidan foydalanamiz. Masalan: $person = new Person();
Savol: OOPda meros nima?
Javob: Meros - bu OOP ning asosiy jihati bo'lib, u sinfga boshqa sinfdan xususiyatlar va usullarni meros qilib olish imkonini beradi.
Savol: Interfeyslar nima ekanligini tushuntirib bera olasizmi?
Javob: Interfeyslar sinf uchun shartnomani belgilash usuli bo'lib, sinf amalga oshirishi kerak bo'lgan usullar to'plamini belgilaydi.
Savol: PHPda OOPning boshqa ilg'or tushunchalari bormi?
Javob: Ha, dasturni modulliroq, boshqariladigan va qayta foydalanishga yaroqli qilish uchun PHPda qo'llanilishi mumkin bo'lgan ko'plab qo'shimcha murakkab tamoyillar mavjud, masalan, abstrakt sinflar, polimorfizm, inkapsulyatsiya va boshqalar.
Mashqlar:
- PHP da sinf yaratish sintaksisi nima?
- PHP sinfida konstruktor usulini qanday aniqlash mumkin?
- PHP sinfidagi statik usul va statik bo'lmagan usul o'rtasidagi farq nima?
- PHP da sinfdan qanday qilib obyekt yaratish mumkin?
- PHP sinfidagi “kengaytirish” kalit so‘zining maqsadi nima?
Javoblar:
- PHP da sinf yaratish sintaksisi bu “class ClassName {}”
- PHP sinfidagi konstruktor usulini __construct() funksiyasi yordamida aniqlash mumkin.
- Statik usulni sinf ob'ektini yaratmasdan chaqirish mumkin, statik bo'lmagan usul esa yaratilishi kerak bo'lgan ob'ektni talab qiladi va keyin uni chaqirish mumkin.
- Ob'ektni PHPdagi sinfdan "yangi" kalit so'zdan keyin sinf nomidan foydalanib va uni o'zgaruvchiga belgilash orqali yaratish mumkin. masalan, $obyekt = yangi ClassName;
- PHP sinfidagi “extends” kalit so‘zi sinfning ota-sinfdan meros bo‘lib qolganligini ko‘rsatish uchun ishlatiladi. Bu sinfga boshqa sinfdan xususiyatlar va usullarni meros qilib olish imkonini beradi.