Интерфейсы объектов

Интерфейсы объектов позволяют программисту создавать код, который указывает, какие методы и свойства должен включать класс, без необходимости описывания их функционала.

Интерфейсы объявляются так же, как и обычные классы, но с использованием ключевого слова "interface"; тела методов интерфейсов должны быть пустыми. Для включения интерфейса в класс программист должен использовать ключевое слово "implements" и описать функционал методов, перечисленных во включаемом интерфейсе. Если это требуется, классы могут включать более одного интерфейса путём их перечисления через пробел.

Если класс включает какой-либо интерфейс и не описывает функционал всех методов этого интерфейса, выполнение кода с использованием такого класса завершится фатальной ошибкой, сообщающей, какие именно методы не были описаны.

Пример 19-18. Пример интерфейса

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