Interfaces de Objetos

Las interfaces de objetos permiten crear código el cual especifica métodos que una clase debe implementar, sin tener que definir como serán manejados esos métodos.

Las interfaces son definidas usando la palabra reservada 'interface', de la misma manera que las clases estárdar, pero sin que cualquiera de los métodos tenga su contenido definido. Las clases que implementan una interface debeb hacerlo usando la palabra reservada 'implements', y deben tener definiciones para todos los métodos enlistados en la interface. Las clases pueden implementar más de una interface si lo desean, enlistando las interfaces separadas por comas.

Todos los métodos en una interface deben ser publicos, esto es la naturaleza de una interface.

Teniendo que una clase implementa una interface, y no implemente todos los métodos en esa interface, resultará en un error fatal que indica cuales métodos no han sido implementados.

Ejemplo 19-17. Ejemplo de Interface

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

// Implement the interface
// This will work
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;
    }
}

// This will not work
// 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;
    }
}

?>

Hosting by: hurra.com
Generated: 2007-01-26 18:01:09