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