Parametrat në metodat e interfacave në OOP në PHP

Gjatë përshkrimit të metodave në interfaca është e nevojshme të tregohet jo vetëm emrat e vetë metodave, por edhe parametrat që ato pranojnë.

Le të shohim një shembull. Le të themi se kemi interfacen iMath, i cili përshkruan një klasë për veprimet matematikore të mbledhjes, zbritjes, shumëzimit dhe pjesëtimit. Le të themi se ky interface duket kështu:

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

Tani metodat e interfacit tonë nuk pranojnë asnjë parametër. Dhe në fakt metodat e klasës që do të implementojë këtë interface, gjithashtu nuk duhet të pranojnë parametra, përndryshe do të ketë gabim.

Le të tregojmë parametrat e metodave në interfacin tonë:

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

Le të shkruajmë tani implementimin e interfacit tonë:

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

Nëse përpiqemi në klasën tonë të vendosim një numër të ndryshëm të parametrave - ne thjesht nuk do të shkojmë: PHP do të shfaqë një gabim. Kështu ne nuk do të jemi në gjendje as aksidentalisht të harrojmë ndonjë parametër, as aksidentalisht të shtojmë një të tepërt.

Задание 1

Le të themi se kemi dhënë këtë interface iUser:

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

Krijoni një klasë User, e cila do të implementojë këtë interface.