Parámetros en métodos de interfaces en POO en PHP

Al describir métodos en interfaces, es necesario indicar no solo los nombres de los métodos mismos, sino también los parámetros que aceptan.

Veamos un ejemplo. Supongamos que tenemos una interfaz iMath que describe una clase para operaciones matemáticas de suma, resta, multiplicación y división. Supongamos que esta interfaz se ve así:

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

Actualmente, los métodos de nuestra interfaz no aceptan ningún parámetro. Y, de hecho, los métodos de la clase que implementará esta interfaz, tampoco deberán aceptar parámetros, de lo contrario, habrá un error.

Especificamos los parámetros de los métodos en nuestra interfaz:

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

Escribamos ahora la implementación de nuestra interfaz:

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

Si intentamos establecer una cantidad diferente de parámetros en nuestra clase, simplemente no lo lograremos: PHP generará un error. Así no podremos ni olvidar accidentalmente algún parámetro, ni agregar accidentalmente uno extra.

Задание 1

Supongamos que tenemos una interfaz iUser como esta:

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

Cree una clase User que implemente esta interfaz.