オブジェクトインターフェイスにより、あるクラスが実装する必要があるメソッドの
種類を、これらのメソッドの実体を定義することなく、指定するコードを作成できる
ようになります。
インターフェイスはキーワードinterfaceにより定義され、通常のクラスと
同様に定義することができますが、メソッドの実装は全く定義されません。
インターフェイスを実装するクラスでは、キーワードimplementsを使用し、
このインターフェイスに含まれる全てのメソッドを定義する必要があります。
クラスは、必要に応じて一つ以上のインターフェイスを実装することができます。
この場合、各インターフェイスをカンマで区切って指定します。
インターフェイス内で宣言される全てのメソッドはpublicである必要があります。
これは、インターフェイスの特性によります。
あるインターフェイスを実装するクラスを記述する際、
インターフェイス内の全てのメソッドを実装しなかった場合、
実装されていないメソッド名を含む致命的なエラーが発生します。
例 19-17. インターフェイスの例
<?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; } }
?>
|
|