Forum und email

Interfaces de Objetos

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.

implements

Para implementar uma interface, o operador implements é usado. Todos os métodos na interface devem ser implementados na classe; não fazer isso resultará em um erro fatal. Classes podem implementar mais de uma interface se assim for desejado, separando cada interface com uma vírgula.

Nota: Uma classe não pode implementar duas interfaces que compartilham o mesmo nome uma vez que isso causaria ambigüidade.

Exemplos

Example#1 Exemplo de Interface

<?php
// Declara a interface 'iTemplate'
interface iTemplate
{
    public function 
setVariable($name$var);
    public function 
getHtml($template);
}

// Implementa a interface
// Isso funcionará
class Template implements iTemplate
{
    private 
$vars = array();

    public function 
setVariable($name$var)
    {
        
$this->vars[$name] = $var;
    }

    public function 
getHtml($template)
    {
        foreach(
$this->vars as $name => $value) {
            
$template str_replace('{' $name '}'$value$template);
        }

        return 
$template;
    }
}

// Isso NÃO funcionará
// Fatal error: Class BadTemplate contains 1 abstract methods
// and must therefore be declared abstract (iTemplate::getHtml)
class BadTemplate implements iTemplate
{
    private 
$vars = array();

    public function 
setVariable($name$var)
    {
        
$this->vars[$name] = $var;
    }
}

?>

Veja também o operador instanceof.