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. Classes que implementam uma interface devem fazê-lo usando a
palavra-chave 'interface', e devem ter definições para todos os métodos listados
na interface. Classes podem implementar mais de uma interface se desejarem
listando cada interface separada por um espaço.
Dizer que uma classe implementa uma interface e depois não implementar todos
os métodos na interface resultará em um erro fatal dizendo quais
métodos não foram implementados.
Exemplo 19-17. Exemplo de Interface
<?php // Declara a interface 'iTemplate' interface iTemplate { public function editarVariavel($nome, $var); public function pegarHtml($template); }
// Implementa a interface // Isso vai funcionar class Template implements iTemplate { private $vars = array(); public function editarVariavel($nome, $var) { $this->vars[$nome] = $var; } public function pegarHtml($template) { foreach($this->vars as $nome => $valor) { $template = str_replace('{'.$nome.'}',$valor, $template); } return $template; } }
// Isso não vai funcionar // Erro Fatal: Classe TemplateRuim contêm 1 método abstrato // e deve, portanto, ser declareada abstrata (iTemplate::getHtml) class BadTemplate implements iTemplate { private $vars = array(); public function editarVariavel($nome, $var) { $this->vars[$nome] = $var; } }
?>
|
|