ในบทความนี้ เราจะหาวิธีใช้อินเทอร์เฟซ PHP ซึ่งเป็นหนึ่งในรูปแบบโครงสร้างที่สำคัญที่สุดในการเขียนโปรแกรมเชิงวัตถุ PHP
อินเทอร์เฟซช่วยให้เราสามารถสร้างโปรแกรม โดยระบุวิธีการสาธารณะที่คลาสต้องดำเนินการ โดยไม่รวมถึงความซับซ้อนและขั้นตอนของวิธีการนำวิธีการเฉพาะไปใช้ นี่หมายความว่าอินเทอร์เฟซสามารถกำหนดชื่อเมธอดและอาร์กิวเมนต์ได้ แต่ไม่ใช่เนื้อหาของเมธอด คลาสใดๆ ที่ใช้อินเทอร์เฟซต้องใช้วิธีการทั้งหมดที่กำหนดโดยอินเทอร์เฟซ
อินเทอร์เฟซมีลักษณะคล้ายคลึงกับคลาส อย่างไรก็ตาม เฉพาะคำสำคัญอินเทอร์เฟซแทนที่วลีคลาสในการประกาศ และไม่มีเมธอดใด ๆ ที่มีเนื้อหาที่กำหนดไว้
ตัวอย่าง
มาสร้างอินเทอร์เฟซและใช้งานด้วยตัวอย่างง่ายๆ กันเถอะ
<?php
Interface MyInterface {
public function getName();
public function getAge();
}
class MyClass implements MyFirstInterface{
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
คำอธิบาย:
ที่นี่เราได้ประกาศอินเทอร์เฟซ MyFirstInterface ด้วยสองวิธี getName และ getAge ภายในโดยไม่มีเนื้อหาใด ๆ จากนั้นคลาส MyClass จะใช้อินเทอร์เฟซนี้และใช้วิธีการที่มีอยู่ตามความต้องการ
มาเรียนรู้ลักษณะสำคัญของอินเทอร์เฟซกันเถอะ:
- อินเทอร์เฟซประกอบด้วยวิธีที่ไม่มีเนื้อหา ซึ่งหมายความว่าวิธีอินเทอร์เฟซเป็นวิธีนามธรรม
- ทุกเมธอดในอินเทอร์เฟซต้องมีขอบเขตการเปิดเผยต่อสาธารณะ
- อินเทอร์เฟซไม่เหมือนกับคลาสเนื่องจากคลาสสามารถสืบทอดจากคลาสหนึ่งได้ แต่คลาสสามารถใช้อินเทอร์เฟซได้ตั้งแต่หนึ่งรายการขึ้นไป
- ไม่มีตัวแปรอยู่ภายในอินเทอร์เฟซ
หมายเหตุ:
เราสามารถได้รับมรดกหลายรายการโดยใช้อินเทอร์เฟซ เนื่องจากคลาสสามารถใช้อินเทอร์เฟซได้มากกว่าหนึ่งอินเทอร์เฟซ แต่สามารถขยายได้เพียงคลาสเดียวเท่านั้น
ตัวอย่าง
มาทดสอบกันโดยใช้ตัวอย่างง่ายๆ
<?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 class d();
$myobj->printData();
$myobj->addData();
?> ผลลัพธ์:
I am printing I am adding
คำอธิบาย :
ในที่นี้เราได้ประกาศอินเทอร์เฟซ 3 แบบ ได้แก่ 'อินเทอร์เฟซ a',' อินเทอร์เฟซ b', 'อินเทอร์เฟซ c' ในกรณีนี้อินเทอร์เฟซ c ขยายอินเทอร์เฟซสองอินเทอร์เฟซก่อนหน้านี้ด้วย จากนั้นเราได้ประกาศคลาสที่ใช้เฉพาะอินเทอร์เฟซ c แต่เนื่องจากอินเทอร์เฟซ c ขยายสองอินเทอร์เฟซก่อนหน้า เมธอดทั้งหมดที่ประกาศใน 'อินเทอร์เฟซ a', 'อินเทอร์เฟซ b' และ 'อินเทอร์เฟซ c' จะพร้อมใช้งานในคลาส ง. นี่คือวิธีที่เราสามารถได้รับมรดกหลายอย่างโดยการใช้อินเทอร์เฟซ