Interface เป็นโครงสร้างสำคัญใน PHP OOP กำหนด public methods ที่คลาสต้อง implement โดยไม่ระบุรายละเอียดการทำงาน (Implementation) Interface ประกอบด้วย method names และ arguments เท่านั้น ไม่มี body คลาสที่ implement interface ต้อง implement ทุกเมธอดที่ interface กำหนด
ตัวอย่าง
<?php
interface MyInterface {
public function getName();
public function getAge();
}
class MyClass implements MyInterface {
public function getName() {
echo "My name A".'<br>';
}
public function getAge(){
echo "My Age 12";
}
}
$obj = new MyClass;
$obj->getName();
$obj->getAge();
?>
ผลลัพธ์
My name A My Age 12
คำอธิบาย
ประกาศ interface MyInterface มี 2 เมธอด ไม่มี body คลาส MyClass implement และนำมาใช้ตามต้องการ
คุณสมบัติสำคัญของ Interface
- เมธอดใน interface เป็น abstract methods (ไม่มี body)
- ทุกเมธอดต้องมี visibility public
- Interface ต่างจากคลาส: คลาสสืบทอดได้แค่ 1 คลาส แต่ implement interface ได้หลายตัว
- ไม่สามารถมี property (ตัวแปร) อยู่ใน interface ได้
หมายเหตุ: Multiple Inheritance ผ่าน Interface
คลาสสามารถ implement หลาย interface ได้ ทำให้เกิด multiple inheritance แบบหนึ่ง
ตัวอย่าง
<?php
interface a { public function printData(); }
interface b { public function getData(); }
interface c extends a, b { public function addData(); }
class d implements c {
public function printData(){ echo "I am printing"; }
public function getData(){ echo "I am reading data"; }
public function addData(){ echo "I am adding"; }
}
$myobj = new d();
$myobj->printData();
$myobj->addData();
?>
ผลลัพธ์
I am printing I am adding
คำอธิบาย
Interface c extends a และ b คลาส d implement c เท่านั้น แต่ได้เมธอดจาก a, b, c ทั้งหมด นี่คือการทำ multiple inheritance ผ่าน interface