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 :

[PHP5] Atouts des interfaces ?


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2004
    Messages : 6
    Points : 8
    Points
    8
    Par défaut [PHP5] Atouts des interfaces ?
    Bonjour à tous, je suis étudiant en informatique et j'apprends le c++, tout en ayant de longues années d'expériences en php4.

    Or, j'ai décidé de passer à php5. J'ai regarder attentivement toutes les nouveautés.
    Certaines me semblent bien pratiques (je programmais en Objet dans php4), par contre j'ai vraiment du mal à cerner l'utilité des interfaces.


    En C++, les interfaces sont incontestablements utiles car les classes sont compilées. Donc les interfaces sont là pour dire au programmeur "y'a cette fonction qui est dispo si tu veux", mais en php, le code n'est pas compilé...



    Voilà, j'aimerai vraiment un éclaircissement sur ce point là.
    Merci

  2. #2
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    L'interface dans un langage objet est... un objet justement, et on peut le manipuler comme tel.

    Par exemple, si tu as une classe qui sert a gerer les bases de données, tu peux faire une interface :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    interface BDD {
    function connect(...)
    function getResult(...)
    function constructQuery(...)
    function AddWhereClause(...)
    ...
    }
    Puis tu va faire l'implementation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    class BDDMySql implements BDD {...}
    class BDDOracle implements BDD {...}
    class BDDPostGres implements BDD {...}
    Maintenant, le code qui va utiliser tout ca... il va travailler avec un object de type BDD !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var $aBDD; // il aura comme type BDD
    switch $typeBase {
    case 'mysql' : $aBDD=(BDD)new BDDMySQL(...); break;
    case 'Oracle' : $aBDD=(BDD)new BDDOracle(...); break;
    ...
    }
     
    // connection a la base de maniere transparente en utilisant les methodes définies dans l'interface
    $aBDD->connect(...);
    De la meme maniere, tu peux définir des methodes qui prennent en parametres des interface, qui renvoie des interface, etc...

    Evidemment, tu peux aussi utiliser des classes abstraites mais si tu n'a aucune implementation, autant utiliser une interface... car l'avantage c'est que tu peux mettre plusieurs interfaces sur un objet (implements A, B, C) mais tu n'a pas d'heritage multiple, tu ne peux donc heriter que d'une seule classe abstraite.

    Un autre exemple d'utilisation d'interface :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class Carre extends Forme implements Affichable, Conteneur
     
    interface Affichable {
    function display();
    }
     
    interface Conteneur {
    function add($name, Forme $aForme);
    function get($name); // retourne un objet de type Forme
    }
    Tu peux ainsi défini sur tes objets des "capacités" (la capacité de contenir d'autres Forme pour l'interface Conteneur par exemple) qui resteront a implementer dans les sous classes.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Fladnag
    L'interface dans un langage objet est... un objet justement, et on peut le manipuler comme tel.
    ben... non, justement. une interface est une classe virtuelle pure, dont toutes les fonctions sont abstraites. on ne peut donc pas instancier une interface...

    en PHP5, je considère que les interfaces sont surtout là pour structurer le code et définir des comportements communs à plusieurs classes.

  4. #4
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    Citation Envoyé par torvalds17
    en PHP5, je considère que les interfaces sont surtout là pour structurer le code et définir des comportements communs à plusieurs classes.
    +1

  5. #5
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    si tu veux, j'ai juste marqué ca parce que l'objet manipulé est de du type de l'interface apres, donc c'est "comme si" l'interface était un objet. enfin, je ne m'exprime pas bien mais le résultat est le meme :

    avec une ou plusieurs interfaces c'est mieux ;o)

    Encore un avantage :
    Quand on fait un cast d'un objet sur une interface qu'il implemente, on "restreint" les methodes appellables aux methodes de l'interface, ca peut etre pratique parfois, quand l'objet implemente plusieurs interfaces, il ne sert parfois a rien de passer a un autre objet une version "complete" alors qu'on peut juste lui donner une "vue" sur l'objet avec 2/3 methodes utilisables. On augmente encore de cette maniere l'encapsultation et la réutilisabilité.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2004
    Messages : 6
    Points : 8
    Points
    8
    Par défaut
    Ok j'ai mieux compris désormais. Merci beaucoup

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

Discussions similaires

  1. [swing] outils pour dessiner des interfaces swing
    Par mlequim dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 09/02/2006, 14h32
  2. [JUnit] Les tests sur des interfaces graphiques
    Par adilo dans le forum Tests et Performance
    Réponses: 5
    Dernier message: 01/02/2006, 14h27
  3. [MFC] accelerer la fab des interfaces
    Par giova_fr dans le forum MFC
    Réponses: 1
    Dernier message: 30/12/2005, 00h07
  4. Outil pour créer des interfaces graphiques
    Par Cyborg289 dans le forum Interfaces Graphiques en Java
    Réponses: 10
    Dernier message: 11/07/2005, 16h48
  5. [Logiciel]Cherche graphisme pour des interfaces visuelles
    Par smyley dans le forum Autres Logiciels
    Réponses: 9
    Dernier message: 14/11/2004, 02h13

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