PHP kézikönyv
Előző | 19. Fejezet. Osztályok és objektumok (PHP 5) | Következő

# 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.

> 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éldák

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.

Előző | Tartalom | Következő
Elvont osztályok (abstract) | Fel | Overloading