Interface em PHP

No desenvolvimento em PHP, a programação orientada a objetos (POO) é uma abordagem poderosa que permite estruturar seu código de forma modular, reutilizável e organizada. Um dos conceitos-chave da POO é a Interface, que ajuda a definir contratos que as classes devem cumprir, garantindo que elas implementem certos métodos de forma consistente. Neste post, vamos explorar o que é uma interface em PHP, como utilizá-la, e quando ela pode ser útil no desenvolvimento de suas aplicações.

O que é uma Interface?

Uma interface em PHP é um contrato que define um conjunto de métodos que uma classe deve implementar. Ao contrário das classes abstratas, as interfaces não podem conter propriedades ou métodos com implementação – elas apenas descrevem quais métodos devem existir.

  • Uma interface não pode ter código executável nos seus métodos;

  • Classes que “assinam” uma interface devem implementar todos os métodos definidos por ela.

Exemplo de Interface:

interface Animal {
    public function fazerSom();
}

No exemplo acima, a interface Animal define um método fazerSom(). Qualquer classe que implemente essa interface será obrigada a definir esse método.

Por que usar Interfaces em PHP?

As interfaces são extremamente úteis quando você deseja garantir que diferentes classes sigam uma estrutura comum. Elas permitem criar um contrato que diferentes classes podem seguir, mesmo que essas classes tenham comportamentos diferentes.

Vantagens de usar Interfaces:

  1. Consistência: Assegura que classes diferentes tenham a mesma assinatura de métodos, garantindo um comportamento padronizado;

  2. Flexibilidade: Permite que várias classes implementem a mesma interface, proporcionando polimorfismo;

  3. Abstração: Desacopla a implementação dos métodos de suas definições, permitindo maior flexibilidade no código.

Implementando uma Interface

Uma vez que a interface está definida, as classes que a implementam devem declarar todos os métodos descritos na interface.

Exemplo:

interface Animal {
    public function fazerSom();
}

class Cachorro implements Animal {
    public function fazerSom() {
        echo "O cachorro faz: Au Au!";
    }
}

class Gato implements Animal {
    public function fazerSom() {
        echo "O gato faz: Miau!";
    }
}

Neste exemplo:

  • A interface Animal define o método fazerSom().
  • As classes Cachorro e Gato implementam a interface e definem seus próprios comportamentos para o método fazerSom().

Uso:

$cachorro = new Cachorro();
$cachorro->fazerSom(); // O cachorro faz: Au Au!

$gato = new Gato();
$gato->fazerSom(); // O gato faz: Miau!

Interfaces e Polimorfismo

As interfaces são uma excelente maneira de implementar o conceito de polimorfismo na programação orientada a objetos. Isso significa que você pode tratar diferentes objetos (de classes distintas) de maneira uniforme, contanto que eles implementem a mesma interface.

Exemplo de Polimorfismo:

function testarVeiculo(Veiculo $veiculo) {
    $veiculo->acelerar();
    $veiculo->frear();
}

$carro = new Carro();
$moto = new Moto();

testarVeiculo($carro); // O carro está acelerando! O carro está freando!
testarVeiculo($moto);  // A moto está acelerando! A moto está freando!

Nesse exemplo, a função testarVeiculo() pode receber qualquer objeto que implemente a interface Veiculo, seja ele um Carro ou uma Moto. Assim, a mesma função trata ambos os objetos de maneira polimórfica.

Herança múltipla com Interfaces

Ao contrário das classes em PHP, que não suportam herança múltipla, uma classe pode implementar várias interfaces ao mesmo tempo. Isso é útil quando você deseja que uma classe tenha múltiplas responsabilidades sem a limitação da herança simples.

Exemplo:

interface Voar {
    public function decolar();
}

interface Nadar {
    public function nadar();
}

class Pato implements Voar, Nadar {
    public function decolar() {
        echo "O pato está voando!";
    }

    public function nadar() {
        echo "O pato está nadando!";
    }
}

Aqui, a classe Pato implementa tanto a interface Voar quanto Nadar, sendo capaz de decolar e nadar.

Mais um exemplo prático

Todos os métodos declarados em uma interface devem ser públicos, essa é a natureza de uma interface:

 interface Veiculo {
  
  //Funções que precisam ser implementadas na classe que implementar a classe Veiculo
  public function acelerar ($velocidade);
  public function frear ($velocidade);
  public function trocarMarcha($marcha);
 }

 //Classe Celta implementa classe Veiculo
 class Celta implements Veiculo {

  //Todas as funções da classe Veiculo precisam ser implementadas	
  public function acelerar($velocidade)
  {
    echo "O veículo acelerou até ". $velocidade ." km/h.";
  }
	
  public function frear($velocidade)
  {
    echo "O veículo frenou até ". $velocidade ." km/h.";
  }
	
  public function trocarMarcha($marcha)
  {
    echo "O veículo engatou a marcha ". $marcha .".";
  } 
}
  
  $carro = new Celta();
  $carro->trocarMarcha(1);
  
  Será mostrado: "O veículo engatou a marcha 1." 

Para implementar mais de uma classe basta separá-las por vírgula: class x implements a, b, c …

As interfaces são uma ferramenta poderosa em PHP para garantir que diferentes classes sigam um contrato comum, promovendo consistência, polimorfismo e reutilização de código. Elas permitem definir quais métodos uma classe deve ter, sem ditar como esses métodos devem ser implementados, proporcionando grande flexibilidade no design de suas aplicações.

QUER APRENDER PHP ORIENTADO A OBJETOS OU APERFEIÇOAR O QUE JÁ SABE?

Então conheça o curso online que já ajudou milhares de pessoas a aprender a programar e desenvolver seus próprios projetos do ZERO e usando orientação a objetos de uma forma fácil de entender.

CLIQUE NA IMAGEM ABAIXO E SAIBA MAIS:

CLIQUE AQUI E SAIBA MAIS

Dúvidas ou sugestões sobre Interface em PHP? Deixem nos comentários! Para mais dicas, acesse o nosso canal no YouTube:
https://youtube.com/criandobits

Tags:

Sobre o Autor

Benedito Silva Júnior
Benedito Silva Júnior

Bacharel em Sistemas de Informação pelo Instituto Paulista de Pesquisa e Ensino IPEP. Apaixonado por tecnologias e games do tempo da vovó!

0 Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *