Added some documentation on interfaces.

git-svn-id: https://svn.php.net/repository/phpdoc/en/trunk@164122 c90b9560-bf6c-de11-be94-00142212c4b1
This commit is contained in:
Jon Wood 2004-07-23 18:59:30 +00:00
parent 32df432bac
commit 8ea94641f2

View file

@ -1,11 +1,58 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision: 1.1 $ -->
<!-- $Revision: 1.2 $ -->
<sect1 id="language.oop5.interfaces">
<title>Object Interfaces</title>
<para>
.
Object interfaces allow you to create code which specifies which methods
and variables a class must implement, without having to define how these
methods are handled.
</para>
<para>
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 space.
</para>
<para>
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.
</para>
<example>
<title>Interface example</title>
<programlisting role="php">
<![CDATA[
<?php
interface ITemplate
{
public function setVariable($name, $var);
public function getHtml($template);
}
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;
}
}
?>
]]>
</programlisting>
</example>
</sect1>