PHP OOP - อินเทอร์เฟซ
PHP - อินเทอร์เฟซคืออะไร
อินเทอร์เฟซช่วยให้คุณสามารถระบุวิธีการที่คลาสควรใช้
อินเทอร์เฟซทำให้ง่ายต่อการใช้งานหลากหลายคลาสในลักษณะเดียวกัน เมื่ออย่างน้อยหนึ่งคลาสใช้อินเทอร์เฟซเดียวกัน จะเรียกว่า "polymorphism"
อินเทอร์เฟซถูกประกาศด้วยinterface
คำสำคัญ:
ไวยากรณ์
<?php
interface InterfaceName {
public function someMethod1();
public function someMethod2($name, $color);
public function
someMethod3() : string;
}
?>
PHP - ส่วนต่อประสานกับคลาสนามธรรม
อินเทอร์เฟซคล้ายกับคลาสนามธรรม ความแตกต่างระหว่างอินเทอร์เฟซและคลาสนามธรรมคือ:
- อินเทอร์เฟซไม่สามารถมีคุณสมบัติได้ในขณะที่คลาสนามธรรมสามารถ
- เมธอดของอินเตอร์เฟสทั้งหมดต้องเป็นแบบสาธารณะ ในขณะที่เมธอดคลาสนามธรรมนั้นเป็นแบบสาธารณะหรือได้รับการป้องกัน
- เมธอดทั้งหมดในอินเทอร์เฟซเป็นแบบนามธรรม ดังนั้นจึงไม่สามารถนำมาใช้ในโค้ดได้ และไม่จำเป็นต้องใช้คีย์เวิร์ดที่เป็นนามธรรม
- คลาสสามารถใช้อินเทอร์เฟซในขณะที่รับช่วงจากคลาสอื่นในเวลาเดียวกัน
PHP - การใช้อินเทอร์เฟซ
ในการใช้งานอินเทอร์เฟซ คลาสต้องใช้ implements
คีย์เวิร์ด
คลาสที่ใช้อินเทอร์เฟซต้องใช้ เมธอด ทั้งหมดของอินเทอร์เฟซ
ตัวอย่าง
<?php
interface Animal {
public function makeSound();
}
class Cat implements Animal {
public function makeSound() {
echo "Meow";
}
}
$animal = new Cat();
$animal->makeSound();
?>
จากตัวอย่างข้างต้น สมมุติว่าเราต้องการเขียนซอฟต์แวร์ที่จัดการกลุ่มของสัตว์ มีการกระทำที่สัตว์ทั้งหมดสามารถทำได้ แต่สัตว์แต่ละตัวทำในแบบของตัวเอง
เมื่อใช้อินเทอร์เฟซ เราสามารถเขียนโค้ดบางอย่างที่ใช้ได้กับสัตว์ทุกตัว แม้ว่าสัตว์แต่ละตัวจะมีพฤติกรรมต่างกัน:
ตัวอย่าง
<?php
// Interface definition
interface Animal {
public
function makeSound();
}
// Class definitions
class Cat
implements Animal {
public function makeSound() {
echo " Meow ";
}
}
class Dog implements Animal {
public function makeSound()
{
echo " Bark ";
}
}
class Mouse implements Animal {
public function makeSound() {
echo " Squeak ";
}
}
// Create a list
of animals
$cat = new Cat();
$dog = new Dog();
$mouse = new
Mouse();
$animals = array($cat, $dog, $mouse);
// Tell the animals
to make a sound
foreach($animals as $animal) {
$animal->makeSound();
}
?>
ตัวอย่างที่อธิบาย
Cat, Dog and Mouse เป็นคลาสทั้งหมดที่ใช้อินเทอร์เฟซ Animal ซึ่งหมายความว่าทุกคนสามารถสร้างเสียงโดยใช้makeSound()
วิธีการ ด้วยเหตุนี้ เราจึงสามารถวนรอบสัตว์ทั้งหมดและบอกให้พวกมันทำเสียง แม้ว่าเราจะไม่รู้ว่าสัตว์แต่ละชนิดเป็นประเภทใด
เนื่องจากอินเทอร์เฟซไม่ได้บอกชั้นเรียนถึงวิธีการใช้เมธอด สัตว์แต่ละตัวสามารถสร้างเสียงในแบบของตัวเองได้