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 :

interfaces multiples avec même nom de fonction


Sujet :

Langage PHP

  1. #1
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 505
    Points : 3 135
    Points
    3 135
    Par défaut interfaces multiples avec même nom de fonction
    Bonjour

    Il me semblait avoir quelque part qu'on pouvait utiliser 2 interfaces sur une classe même si des noms de fonction étaient communs aux 2 interfaces.

    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
     
    interface ITest {
    	public function Value(): int;
    }
     
    interface ITest2 {
    	public function Value(): int;
    }
     
    class Test implements ITest, ITest2 {
     
    	public function Value() : int{
    		return 1;
    	}
     
    	public function Value() : int {
    		return 1;
    	}
     
    }
    Evidemment, tel quel, c'est faux.

    Est-ce qu'il y a une syntaxe pour adapter ce cas ?

    Après, comme ça fait très longtemps que j'ai vu ça, je confonds peut-être avec un autre langage informatique.

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 244
    Points
    20 244
    Par défaut
    C'est en théorie possible d'implémenter 2 interfaces avec les mêmes méthodes , mais il faut qu'elles aient la même signature :

    Avant PHP 5.3.9, une classe ne pouvait pas implémenter deux interfaces qui spécifiaient une méthode avec le même nom, sachant que cela introduisait une ambiguïté. Les versions plus récentes de PHP l'autorisent, à partir du moment où les méthodes dupliquées ont la même signature.
    https://www.php.net/manual/fr/langua...interfaces.php

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    interface I1
    {
        test(int $param)
    }
     
    interface I2
    {
        test(int $param)
    }
     
    interface I2
    {
        test(int $param,int $param2)
    }
     
     
    // OK
    class TestClass implements I1, I2
    {
        public function test(int $param)
        {
        }
    }
     
    // KO
    class TestClass implements I1, I3
    {
        public function test(int $param)
        {
        }
     
        public function test(int $param,int $param2)
        {
        }
    }
    Ceci étant dit, si tu as 2 interfaces avec les mêmes nom de méthode , implémenté dans la même classe c'est qu'il y'a surement un problème de conception/nommage quelque part.

  3. #3
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 505
    Points : 3 135
    Points
    3 135
    Par défaut
    Comprends pas

    Si elles ont la même signature, elles devraient être considérées comme identiques non ???

    Ce serait pas plutôt l'inverse ? des signatures différentes ??



    euh, j'ai rien dis .... je me suis un peu embrouillé.
    Il faut juste avoir une seule fonction qui correspondent aux déclarations identiques.
    Je cherchais à en faire avec une sorte d'alias sur chacune pour les différencier mais ça doit pas le faire.

    Merci

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/06/2015, 16h13
  2. Réponses: 4
    Dernier message: 16/01/2007, 20h48
  3. requete sur 2 tables liées avec même nom de champs
    Par Australia dans le forum Access
    Réponses: 5
    Dernier message: 02/02/2006, 12h38
  4. suppression produit avec même nom
    Par betaphp dans le forum Langage SQL
    Réponses: 18
    Dernier message: 29/11/2005, 23h32
  5. ASP champs avec même nom
    Par pete007 dans le forum ASP
    Réponses: 8
    Dernier message: 03/05/2004, 23h58

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