A implementação dos métodos de uma interface é feita normalmente com qualquer outro
método já exemplificado.
Sintaxe
//classe omitida
modificador_acesso function nome_metodo( <lista_parametros> ): tipo_retorno
{
//corpo
}
Os nomes dos parâmetros utilizados não precisam coincidir com os das assinaturas
dos métodos de uma interface. O importante é que tenham o mesmo tipo de dado.
Exemplo 4
<?php
//main.php
interface IInterface
{
function metodo1();
function metodo2(int $p);
function metodo3(int $p): string;
}
class Classe implements IInterface
{
public function metodo1(){
echo "metodo1","\n";
}
public function metodo2(int $p){
echo "metodo2:$p","\n";
}
public function metodo3(int $p) : string {
return "metodo3: $p";
}
}
$classe = new Classe();
$classe->metodo1();
$classe->metodo2(999);
echo $classe->metodo3(888);
Saída
metodo1
metodo2:999
metodo3: 888
Com o uso de interface, podemos ter N classes herdando de uma mesma interface
realizando as mesmas tarefas de forma diferente de acordo com suas necessidades.
Exemplo 5
<?php
//main.php
interface IInterface
{
function metodo3(int $p): string;
}
class Classe1 implements IInterface
{
public function metodo3(int $p) : string {
return "Classe1:metodo3: $p\n";
}
}
class Classe2 implements IInterface
{
public function metodo3(int $p) : string {
return "Classe2:metodo3: $p\n";
}
}
$classe1 = new Classe1();
echo $classe1->metodo3(111);
$classe2 = new Classe1();
echo $classe2->metodo3(222);
?>
Saída
Classe1:metodo3: 111
Classe1:metodo3: 222