PHP Interface haqida
Interfeys - bu sinfning qanday metodlarni o‘z ichiga olishi kerakligini belgilaydigan tuzilma. Interface faqat metodlarning nomlari va ularning parametrlari ro‘yxatini o‘z ichiga oladi, lekin bu metodlarning tanasi (implementation) bo‘lmaydi. Interface'lar sinflar o‘rtasida bir xil tuzilmani ta'minlash uchun ishlatiladi.
Interfeyslar polimorfizmni nazarda tutadi.
Ya'ni polimorfizm bu bola sinfda otadan kelgan xususiyat va usullar qiymatlarini o'zgartirishdir.
Interfeysda faqat metod nomi bo'ladi va tanasi bo'lmaydi. Sinflar interface ni ishlatayotganda ushbu metod tanasini o'zlari hohlagancha o'zgartira oladi.
Interface lar interface kalit so'zi bilan yoziladi.
<?php
interface InterfaceName {
public function someMethod1();
public function someMethod2($name, $color);
public function someMethod3() : string;
}
?>
Interface larni asosiy jihatlari:
- Interface lar xususiyatlarni o'z ichiga olmaydi. Ya'ni interfeys ichida xususiyat (property) yaratilmaydi.
- Interfeyslarda medodlarning faqat nomi va ular qabul qiladigan parametrlar bo'ladi. Lekin metodlarning tanasi bo'lmaydi. Interfeysda metodlarning kirish modifikatori public bo'lishi shart. Class larda esa ular public yoki protected bo'laveradi.
Shuningdek interfeysdagi barcha metodlar abstract bo'ladi va abstract so'zini yozish shart emas. Sinflarda esa yozilishi kerak.
3. Interface'ni implement qilgan (amalga oshirgan) har qanday sinf, unda belgilangan barcha metodlarni o‘zida amalga oshirishi kerak.
interface Hayvon {
public function ovozChiqar();
}
class It implements Hayvon {
public function ovozChiqar() {
echo "Vov!";
}
}
class Mushuk implements Hayvon {
public function ovozChiqar() {
echo "Miyov!";
}
}
$it = new It();
$it->ovozChiqar(); // Natija: Vov!
$mushuk = new Mushuk();
$mushuk->ovozChiqar(); // Natija: Miyov!