Les interfaces objet vous permettent de créer du code qui spécifie quelles
méthodes et variables une classe peut implémenter, sans avoir à définir
comment ces méthodes seront gérées.
Les interfaces sont définies en utilisant le mot clé interface,
de la même façon qu'une classe standard mais sans aucun contenu de méthode.
Toutes les méthodes déclarées dans une interface doivent être publiques.
Pour implémenter une interface, l'opérateur implements
est utilisé. Toutes les méthodes de l'interface doivent être implémentées dans une
classe ; si ce n'est pas le cas, une erreur fatale sera émise. Les classes peuvent
implémenter plus d'une interface en séparant chaque interface par une virgule.
Note :
Une classe ne peut implémenter deux interfaces qui partagent des noms de
fonctions, puisque cela causerait une ambiguïté.
Exemple 19-19. Exemple d'interface
<?php // Declaration de l'interface 'iTemplate' interface iTemplate { public function setVariable($name, $var); public function getHtml($template); }
// Implémentation de l'interface // Ceci va fonctionner 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; } }
// Ceci ne fonctionnera pas // 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; } } ?>
|
|
Voir aussi l'opérateur
instanceof.