CriandoBits
Identifique-se Entrar Esqueceu a senha? Esqueci minha senha

PHP - Interface

Por Benedito Silva Júnior - publicado em 20/07/2016


Para permitir que classes distintas possam ter determinados comportamentos iguais, mas programados em um único lugar, foram criadas as interfaces. É como se fossem complementos para serem utilizados por classes.

O conceito de interface está atrelado a um contrato. Se determinada classe deseja se adequar a uma interface, em troca ela deve implementar todos os métodos dessa interface. O objetivo principal da interface é esconder detalhes da implementação, já que apenas assinaturas de métodos são definidas. A assinatura do método indica o que é feito, e não como é feito.

Interfaces de Objetos permite a criação de código que especifica quais métodos e variáveis uma classe deve implementar, sem ter que definir como esses métodos serão tratados. Interfaces são definidas usando a palavra-chave 'interface', da mesma maneira que uma classe comum, mas sem nenhum dos métodos ter seu conteúdo definido. Todos os métodos declarados em uma interface devem ser public, essa é a natureza de uma interface.

Exemplo:

<?php interface Locavel { //criação da interface 'Locavel' public function locar($paraQuem); public function devolver(); } class Pessoa { public $nome; public $idade; public $email; function _construct($nome, $idade, $email) { $this->nome = $nome; $this->idade = $idade; $this->email = $email; echo "Um novo objeto Pessoa foi construído"; } } //a classe 'Veiculo' implementa a interface 'Locavel' class Veiculo implements Locavel { protected $chassis; protected $locado; protected $locadoParaQuem; function _construct($chassis) { $this -> chassis = $chassis; $this -> locado = FALSE; echo "Um novo objeto Pessoa foi construído"; } public function locar($paraQuem) //implementação do método locar() { if($this -> locado == FALSE && $paraQuem -> idade >= 18) { $locadoParaQuem = $paraQuem; $this -> locado = TRUE; return "Locação efetuada"; } else return "Falha na operação"; } public function devolver() //implementação do método devolver() { if($this -> locado == TRUE) { $this -> locadoParaQuem = null; $this -> locado = FALSE; return "Devolução realizada"; } } } $veiculo1 = new Veiculo("ABC1234"); $pessoa1 = new Pessoa("Bene", 33, "bene@dominio"); //tentativas de locação e devolução echo "Tentativa 1: ".$veiculo -> locar($pessoa1); echo "Tentativa 2: ".$veiculo -> locar($pessoa1); echo "Devolução: ".$veiculo -> locar($pessoa1); echo "Tentativa 3: ".$veiculo1->locar($pessoa1); ?>

A ideia da implementação desses métodos (locar e devolver) é verificar se o veículo está ou não locado e, caso esteja disponível, verificar a idade do candidato a condutor. Se for superior a 18, a locação está liberada.

O exemplo usou um objeto pessoa sendo passado como parâmetro para o método locar, exemplificando que as validações poderiam ser muitas, caso a classe Pessoa tivesse carteira de motorista, tipo de carteira, infrações do condutor etc.

Note que um objeto, depois de locado, não pode ser locado novamente enquanto não for devolvido.

Resultados:

* Um novo objeto Veículo foi construído
* Um novo objeto Pessoa foi construído
* Tentativa 1: Locação efetuada
* Tentativa 2: Falha na operação
* Devolução: Devolução realizada
* Tentativa 3: Locação efetuada


 
Voltar a pagina anteriorVoltarSubir ao topo da páginaTopo