Abstraction d'objets
<<<
Interfaces Surcharge
>>>

5.10 Les classes et les objets (PHP 5)
5 Référence du langage
 Manuel PHP

Introduction
Les notions de base
Auto-chargement de classes
Constructeurs et destructeurs
Visibilité
L'opérateur de résolution de portée (::)
Statique
Constantes
Abstraction d'objets
->Interfaces
Surcharge
Les Itération
Masques
Méthodes magiques
Mot clé "final"
Duplication d'objets
Comparaison d'objets
Réflexion
Typage optionnel des paramètres

5.10.10 Interfaces

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 des 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 méthode ayant son contenu de défini. Les classes qui implémentent une interface doivent le faire en utilisant le mot clé implements et doivent avoir des définitions de toutes les méthodes listées dans l'interface. Les classes qui implémentent plus d'une interface doivent le faire en listant chaque interface, séparées d'une virgule.

Toutes les méthodes déclarées dans une interface doivent être publiques.

Si une classe définissant une interface n'implémente pas toutes les méthodes dans l'interface, une erreur fatale vous indiquera quelle méthode n'a pas été implémentée.

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

<< Interfaces >>
Abstraction d'objets Les classes et les objets (PHP 5) Surcharge