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