IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Utilité d'une interface? [PHP 5.3]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 220
    Par défaut Utilité d'une interface?
    Bonjour,

    J'ai compris comment fonctionne une interface chez Yogui et sur le site PHP.
    Mais quelle est son utilité (dans la pratique)?
    Réponse pratique, simple et générale svp (débutant).

    J'ai compris ce code par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <?php
    interface Joueur
    {
    public function jouer();
    }
    class Labrador implements Joueur
    {
    // une classe qui veut implémenter l'interface Joueur
    // doit définir la méthode jouer()
    public function jouer()
    {
    echo 'Ouah!<br/>';
    }
    }
    $médor = new Labrador();
    $médor->jouer();
     
    // Obtenir la liste des interfaces déclarées :
    print_r(get_declared_interfaces());
    ?>
    Merci

  2. #2
    Membre éclairé
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Février 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Février 2008
    Messages : 71
    Par défaut
    Une interface est utile au moment de la conception d'un logiciel. Elle permet en effet au concepteur d'imposer un "contrat" que les développeurs devront respecter.

    Cela permet notamment de s'assurer que certains objets disposeront de toutes les méthodes nécessaires au fonctionnement général de l'application.


    Parce qu'un exemple est plus parlant qu'une longue explication, voici un cas d'utilisation (en très simple) :

    Un concepteur modélise une application s'appuyant sur une base de données. Pour éviter d'imposer des choix techniques aux développeurs quand à la base de données à utiliser, il va mettre en place l'interface suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    interface Bdd
    {
     
    [...]
    public function connect();
    public function insert();
     
    public function update();
     
    public function delete();
     
    public function select();
    }

    Tout le reste de sont architecture reposera sur des objets dont les méthodes sont celles de l'interface.

    Le développeur qui programme le logiciel conçu par l'architect peut donc librement choisir son SGBD et le connecteur. par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Class Db_Mysql implements Bdd
    {
     
    private $_db;
    public function connect(array $params)
    {
    $this->_db = new PDO($params['dsn'],$params['login'],$params['pass'];
    }
     
    public function select() {
    if($this->_db === null) {
    throw new Esception('Utilisation de la methode select sans connexion à la BDD');
    $sth =  $this->_db->query($params['sql']);
    return $sth->fetchAll($params['fetchMode']);
    }
    [..]

    Ici, l'exemple n'est pas complet par manque de temps, mais une fois que toutes les méthodes sont implémentées, ton objet de base mysql se comportera comme on l'attend de lui dans toute l'application. Et si on veut passer par l'extension mysqli par exemple, il suffit de créer une autre classe qui a la même signature, mais adaptée à mysqli, et on est assuré qu'elle continuera à fonctionner dans toute l'application.

    J'essaierait de terminr l'exemple quand j'aurais le temps...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 220
    Par défaut
    Merci pour ta réponse.

    J'y reviendrai sans doute plus tard (quand je serai plus costaud ).
    Pour l'instant, je marque résolu pour ne pas ennuyer ceux qui travaillent!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. FLEX 4.5 - Utilité d'une interface IMachin
    Par FlexBeginner dans le forum Flash/Flex
    Réponses: 4
    Dernier message: 19/04/2012, 13h47
  2. Comment faire une interface de ce type....
    Par SpiderAlpha dans le forum C++Builder
    Réponses: 6
    Dernier message: 30/04/2007, 13h50
  3. [Débutant] Lancer une interface sous éclipse
    Par bonnefr dans le forum SWT/JFace
    Réponses: 11
    Dernier message: 11/05/2004, 15h59
  4. Comment créé une "interface" pour mes programmes??
    Par alcazar dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 09/02/2004, 13h02
  5. portabilité d'une interface
    Par marou dans le forum JBuilder
    Réponses: 4
    Dernier message: 21/03/2003, 08h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo