Object Interfaces

Object interfaces allow you to create code which specifies which methods and variables a class must implement, without having to define how these methods are handled.

Interfaces are defined using the interface keyword, in the same way as a standard class, but without any of the methods having their contents defined. Classes which implement an interface should do so using the implements keyword, and must have definitions for all the methods listed in the interface. Classes may implement more than one interface if desired by listing each interface split by a space.

Stating that a class implements an interface, and then not implementing all the methods in the interface will result in a fatal error telling you which methods have not been implemented.

Example 18-15. Interface example

<?php
interface ITemplate
{
  
public function setVariable($name, $var);
  
public function getHtml($template);
}

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;
  }
}
?>