jellybob Fri Jul 23 14:59:31 2004 EDT
Modified files: /phpdoc/en/language/oop5 interfaces.xml Log: Added some documentation on interfaces. http://cvs.php.net/diff.php/phpdoc/en/language/oop5/interfaces.xml?r1=1.1&r2=1.2&ty=u Index: phpdoc/en/language/oop5/interfaces.xml diff -u phpdoc/en/language/oop5/interfaces.xml:1.1 phpdoc/en/language/oop5/interfaces.xml:1.2 --- phpdoc/en/language/oop5/interfaces.xml:1.1 Sun Jul 11 08:33:25 2004 +++ phpdoc/en/language/oop5/interfaces.xml Fri Jul 23 14:59:30 2004 @@ -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>