Rajapintamenetelmien parametrit OOP:ssa PHP:ssä

Rajapintamenetelmiä kuvaessa on tarpeen määrittää paitsi itse menetelmien nimet, myös niiden vastaanottamat parametrit.

Katsotaanpa esimerkkiä. Oletetaan, että meillä on rajapinta iMath, joka kuvaa luokan matemaattisille operaatioille yhteenlasku, vähennyslasku, kerto- ja jakolasku. Olkoon tämä rajapinta seuraavanlainen:

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

Tällä hetkellä rajapintamme menetelmät eivät vastaanota yhtään parametreja. Ja itse asiassa luokan menetelmien, jotka toteuttavat tämän rajapinnan, ei myöskään pitäisi vastaanottaa parametreja, muuten tulee virhe.

Määritetään nyt menetelmiemme parametrit rajapinnassamme:

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

Kirjoitetaan nyt rajapintamme toteutus:

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

Jos yritämme luokassamme asettaa eri määrän parametreja - se ei yksinkertaisesti onnistu: PHP antaa virheen. Näin emme voi vahingossa unohtaa jotain parametria, emmekä vahingossa lisää ylimääräistä.

Задание 1

Oletetaan, että meillä on tällainen rajapinta iUser:

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

Tee luokka User, joka toteuttaa tämän rajapinnan.