Forum und email

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.