Fury-Tech Logo
Home  News  Articles  Reviews  Guides  Resources  Forums 
Fury-Tech // Technology news, hardware and game reviews, guides, articles, and resources   
Search:



There are currently 0 members and 21 guests browsing on Fury-Tech.


Join our community in the tech forums for uncut technology discussion.

Object Interfaces


Object interfaces allow you to create code which specifies which methods a class must implement, without having to define how these methods are handled.

Interfaces are defined using the interface keyword, in the same way as a standard class, but without any of the methods having their contents defined. Classes which implement an interface should do so using the implements keyword, and must have definitions for all the methods listed in the interface. Classes may implement more than one interface if desired by listing each interface split by a comma.

All methods declared in an interface must be public, this is the nature of an interface.

Stating that a class implements an interface, and then not implementing all the methods in the interface will result in a fatal error telling you which methods have not been implemented.

Example 19-17. Interface example

<?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;
    }
}

?>
Join our community in the tech forums for uncut technology discussion.



©2007 Fury-Tech | Tech News, Hardware Reviews, Forums, Guides, and more.

Web Hosting by Intavant

Tech News | Articles | Reviews | Guides | Resources | Tech Forums