พารามิเตอร์ในเมธอดของอินเทอร์เฟซใน OOP ใน PHP
เมื่ออธิบายเมธอดในอินเทอร์เฟซจำเป็นต้องระบุไม่เพียงแต่ชื่อของเมธอดเองเท่านั้น แต่ยังรวมถึงพารามิเตอร์ที่เมธอดเหล่านั้นรับด้วย
มาดูตัวอย่างกัน สมมติว่าเรามีอินเทอร์เฟซ iMath ซึ่งอธิบายคลาสสำหรับการดำเนินการทางคณิตศาสตร์ การบวก การลบ การคูณ และการหาร สมมติว่าอินเทอร์เฟซนี้มีลักษณะดังนี้:
<?php
interface iMath
{
public function sum();
public function subtract();
public function multiply();
public function divide();
}
?>
ตอนนี้เมธอดของอินเทอร์เฟซของเราไม่รับพารามิเตอร์ใดๆ และจริงๆ แล้วเมธอดของคลาสที่จะใช้อินเทอร์เฟซนี้ก็จะต้องไม่รับพารามิเตอร์เช่นกัน ไม่เช่นนั้นจะเกิดข้อผิดพลาด
เรามาระบุพารามิเตอร์ของเมธอดในอินเทอร์เฟซของเรากัน:
<?php
interface iMath
{
public function sum($a, $b);
public function subtract($a, $b);
public function multiply($a, $b);
public function divide($a, $b);
}
?>
ตอนนี้เรามาเขียนการใช้งานอินเทอร์เฟซของเรา:
<?php
class Math implements iMath
{
public function sum($a, $b)
{
return $a + $b;
}
public function subtract($a, $b)
{
return $a - $b;
}
public function multiply($a, $b)
{
return $a * $b;
}
public function divide($a, $b)
{
return $a / $b;
}
}
?>
หากเราพยายามกำหนดจำนวนพารามิเตอร์ที่แตกต่างกันในคลาสของเรา เราจะทำไม่ได้เลย: PHP จะแสดงข้อผิดพลาด ดังนั้นเราจะไม่สามารถลืมพารามิเตอร์บางตัวโดยไม่ได้ตั้งใจ หรือเพิ่มพารามิเตอร์ที่ไม่จำเป็นโดยไม่ได้ตั้งใจ
สมมติว่าเรามีอินเทอร์เฟซ iUser ดังต่อไปนี้:
<?php
interface iUser
{
public function setName($name);
public function getName();
public function setAge($age);
public function getAge();
}
?>
สร้างคลาส User ที่จะใช้อินเทอร์เฟซนี้