พารามิเตอร์ในเมธอดของอินเทอร์เฟซใน OOP ใน PHP

เมื่ออธิบายเมธอดในอินเทอร์เฟซจำเป็นต้องระบุไม่เพียงแต่ชื่อของเมธอดเองเท่านั้น แต่ยังรวมถึงพารามิเตอร์ที่เมธอดเหล่านั้นรับด้วย

มาดูตัวอย่างกัน สมมติว่าเรามีอินเทอร์เฟซ iMath ซึ่งอธิบายคลาสสำหรับการดำเนินการทางคณิตศาสตร์ การบวก การลบ การคูณ และการหาร สมมติว่าอินเทอร์เฟซนี้มีลักษณะดังนี้:

iMath.php<?php
  interface iMath
  {
    public function sum();
    public function subtract();
    public function multiply();
    public function divide();
  }
?>

ตอนนี้เมธอดของอินเทอร์เฟซของเราไม่รับพารามิเตอร์ใดๆ และจริงๆ แล้วเมธอดของคลาสที่จะใช้อินเทอร์เฟซนี้ก็จะต้องไม่รับพารามิเตอร์เช่นกัน ไม่เช่นนั้นจะเกิดข้อผิดพลาด

เรามาระบุพารามิเตอร์ของเมธอดในอินเทอร์เฟซของเรากัน:

iMath.php<?php
  interface iMath
  {
    public function sum($a, $b);
    public function subtract($a, $b);
    public function multiply($a, $b);
    public function divide($a, $b);
  }
?>

ตอนนี้เรามาเขียนการใช้งานอินเทอร์เฟซของเรา:

Math.php<?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 จะแสดงข้อผิดพลาด ดังนั้นเราจะไม่สามารถลืมพารามิเตอร์บางตัวโดยไม่ได้ตั้งใจ หรือเพิ่มพารามิเตอร์ที่ไม่จำเป็นโดยไม่ได้ตั้งใจ

Задание 1

สมมติว่าเรามีอินเทอร์เฟซ iUser ดังต่อไปนี้:

php<?php
  interface iUser
  {
    public function setName($name);
    public function getName();
    public function setAge($age);
    public function getAge();
  }
?>

สร้างคลาส User ที่จะใช้อินเทอร์เฟซนี้