Interfaces

Les interfaces objet permettent de créer du code qui spécifie quelles méthodes une classe doit implémenter.

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.

implements

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é.

Exemples

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 .