A free and open-source book on ZF3 for beginners

Translation into this language is not yet finished. You can help this project by translating the chapters and contributing your changes.

3.3. Les Interfaces PHP

En PHP, les interfaces vous permettent de définir quel comportement doit avoir une classe mais sans fournir l'implémentation d'un tel comportement. C'est ce qu'on appelle un contrat : en implémentant une interface, une classe accepte les termes du contrat.

Dans Zend Framework 3, les interfaces sont largement utilisées. Par exemple, la classe Application implémente ApplicationInterface qui définit les méthodes que chaque classe d'application doit fournir :

<?php
namespace Zend\Mvc;

interface ApplicationInterface
{
    // Récupère le gestionnaire de service.
    public function getServiceManager();

    // Récupère l'objet de requête HTTP.
    public function getRequest();

    // Récupère l'objet de réponse HTTP.
    public function getResponse();

    // Exécute l'application.
    public function run();
}

Comme vous pouvez le voir dans l'exemple ci-dessus, une interface est définie à l'aide du mot-clé interface, de la même manière que vous définissez une classe PHP standard. En tant que classe habituelle, l'interface définit des méthodes. Cependant, l'interface ne fournit aucune implémentation de ses méthodes. Dans la définition de l'interface ApplicationInterface ci-dessus, vous pouvez voir que chaque application implémentant cette interface aura la méthode getServiceManager() pour récupérer le gestionnaire de service (dont nous parlerons plus tard), les méthodes getRequest() et getResponse() pour récupérer la requête et la réponse HTTP et la méthode run() pour exécuter l'application.

Dans Zend Framework 3, par convention, les classes d'interface doivent être nommées avec le suffixe Interface, comme ApplicationInterface.

Une classe implémentant une interface est appelée une classe concrète. La classe concrète Application implémente ApplicationInterface, ce qui signifie qu'elle fournit l'implémentation des méthodes définies par l'interface :

<?php
namespace Zend\Mvc;

class Application implements ApplicationInterface
{
    // Implémentation des méthodes de l'interface :

    public function getServiceManager()
    {
        // Fournis une implémentation ...
    }

    public function getRequest()
    {
        // Fournis une implémentation ...
    }

    public function getResponse()
    {
        // Fournis une implémentation ...
    }

    public function run()
    {
        // Fournis une implémentation ...
    }
}

La classe concrete Application utilise le mot clé implements pour montrer qu'elle fournit une implémentation de toutes les méthodes de l'interface ApplicationInterface. La classe Application peut également avoir des méthodes supplémentaires, qui ne font pas partie de l'interface.

Graphiquement, les relations de classe sont affichées en utilisant le diagramme d'héritage. Dans la figure 3.1, le diagramme de la classe Application est présenté. La flèche pointe de la classe enfant à la classe parent.

Figure 3.1. Diagramme de la classe Application Figure 3.1. Diagramme de la classe Application


Top