Az objektum interfészek lehetővé teszik, hogy létrehozz egy kódot mely megszabja,
milyen metódusokat kötelező implementálni anélkül, hogy definiáljuk ezeknek a metódusoknak
a kezelését.
Az interfészeket az interface kulcsszóval lehet definiálni, ugyanúgy mint az általános
osztályokat, de a metódusok tartalma nélkül.
Minden interfészben definiált metódusnak publikusnak kell lennie, ez a természetes
egy interfészben.
Egy interfész megvalósításához az implements kezelőt kell használni.
Minden interfészben szereplő metódust meg kell valósítani az osztályba, különben
a program fatális hibát eredményez. Az osztályok több, mint egy interfészt is megvalósíthatnak,
ha ezeket vesszővel választjuk el.
Megjegyzés:
Egy osztály nem valósíthat meg két interfészt amelyek azonos függvényneveket tárolnak,
ugyanis ez kétértelműséget okozhat.
Példa 19-19. Interface example
<?php // Az "iTemplate" interfész definiálása interface iTemplate { public function setVariable($name, $var); public function getHtml($template); }
// Interfész megvalósítása // Ez múködni fog 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; } }
// Ez nem működik // Fatal error: Class BadTemplate contains 1 abstract methods // and must therefore be declared abstract (iTemplate::getHtml) // Fatális hiba: A BadTemplate tarmalmaz 1 elvont metódust és ezért ezt definiálni kell (iTemplate::getHtml) class BadTemplate implements iTemplate { private $vars = array(); public function setVariable($name, $var) { $this->vars[$name] = $var; } }
?>
|
|
Lásd még az instanceof
operátort.