ในบทความนี้ เราจะหาวิธีใช้อินเทอร์เฟซ 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' จะพร้อมใช้งานในคลาส ง. นี่คือวิธีที่เราสามารถได้รับมรดกหลายอย่างโดยการใช้อินเทอร์เฟซ