Objektum interfészek
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.
implements
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.
Note: 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éldák
Example#1 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.