Paraméterek az interfész metódusaiban az OOP-ban PHP-ben

Az interfészek metódusainak leírásakor nemcsak maguknak a metódusoknak a nevét kell megadni, hanem az általuk elfogadott paramétereket is.

Nézzük ezt egy példán keresztül. Legyen egy iMath interfészünk, amely egy osztályt ír le a matematikai összeadás, kivonás, szorzás és osztás műveleteihez. Legyen ez az interfész így:

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

Jelenleg az interfész metódusai nem fogadnak semmilyen paramétert. És valójában azon osztály metódusainak, amely megvalósítja ezt az interfészt, szintén nem szabad paramétereket fogadniuk, különben hiba történik.

Adjunk meg paramétereket az interfészünk metódusainak:

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);
  }
?>

Írjuk meg most az interfészünk megvalósítását:

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;
    }
  }
?>

Ha megpróbálnánk az osztályunkban más mennyiségű paramétert megadni - ez egyszerűen nem sikerülne: PHP hibát jelezne. Így nem tudunk sem véletlenül elfelejteni valamilyen paramétert, sem véletlenül feleslegest hozzáadni.

Задание 1

Legyen egy ilyen iUser interfészünk:

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

Készítsen egy User osztályt, amely megvalósítja ezt az interfészt.