Parâmetros em métodos de interfaces em POO em PHP
Ao descrever métodos em interfaces, é necessário especificar não apenas os nomes dos próprios métodos, mas também os parâmetros que eles aceitam.
Vamos ver um exemplo. Suponha que temos
a interface iMath, que descreve uma classe
para operações matemáticas de adição, subtração,
multiplicação e divisão. Vamos supor que esta interface
seja assim:
<?php
interface iMath
{
public function sum();
public function subtract();
public function multiply();
public function divide();
}
?>
Atualmente, os métodos da nossa interface não aceitam nenhum parâmetro. E, na verdade, os métodos da classe que implementará esta interface também não deverão aceitar parâmetros, caso contrário, haverá um erro.
Vamos especificar os parâmetros dos métodos na nossa interface:
<?php
interface iMath
{
public function sum($a, $b);
public function subtract($a, $b);
public function multiply($a, $b);
public function divide($a, $b);
}
?>
Agora, vamos escrever a implementação da nossa interface:
<?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;
}
}
?>
Se tentarmos definir uma quantidade diferente de parâmetros em nossa classe - simplesmente não conseguiremos: o PHP retornará um erro. Dessa forma, não poderemos nem esquecer acidentalmente algum parâmetro, nem adicionar um extra por acidente.
Suponha que temos a seguinte interface iUser:
<?php
interface iUser
{
public function setName($name);
public function getName();
public function setAge($age);
public function getAge();
}
?>
Crie uma classe User que irá
implementar esta interface.