オブジェクトインターフェイスにより、あるクラスが実装する必要があるメソッドの
  種類を、これらのメソッドの実体を定義することなく、指定するコードを作成できる
  ようになります。
 
  インターフェイスはキーワードinterfaceにより定義され、通常のクラスと
  同様に定義することができますが、メソッドの実装は全く定義されません。
 
  インターフェイス内で宣言される全てのメソッドはpublicである必要があります。
  これは、インターフェイスの特性によります。
 
    インターフェイスを実装するには、implements
    演算子を使用し、
    このインターフェイスに含まれる全てのメソッドを実装する必要があります。
    実装されていない場合、致命的エラーとなります。
    各インターフェイスをカンマで区切って指定することで、
    クラスは複数のインターフェイスを実装することができます。
   
注意: 
     ひとつのクラスの中で、同じ名前の関数を含む 2 つのインターフェイスを
     実装することはできません。あいまいさを解決できなくなるためです。
    
例 19-19. Interface の例 
<?php // インターフェイス 'iTemplate' を宣言する 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;     } }
  // これは動作しません。 // 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;     } }
  ?>
 |  
  | 
     instanceof
     演算子も参照ください。