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 :

Retrouver le nom d'une classe étendu, dans une méthode qu elle n'implemente pas


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2009
    Messages : 67
    Points : 67
    Points
    67
    Par défaut Retrouver le nom d'une classe étendu, dans une méthode qu elle n'implemente pas
    Bonjour,
    Malgré un intitulé de discussion si complexe, mon problème est assez simple.

    J'ai deux classe

    une classe A , abstraite , implémentant un grand nombre de méthode , dont toutes dépendent du nom ou des attribut de la classe qui étend cette classe.

    et une classe B qui étend A.

    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
    abstract class A{
    
    
    public static function findAll() {
    	
        $query ="SELECT * FROM ".get_class();
          
         ....
        }
    }
    
    =============================
    
    class B extends A{
    
    private $test;
    private $test2;
    
    }
    lorsque j execute:

    B::findAll();

    $query contient : SELECT * FROM A et non B comme je l'attendais.

    J'ai essayé en remplacant get_class() par __Class__ mais toujours le meme problème ...

    Si quelqu'un pourrait m'éclairer, je vous serai très reconnaissant

    Merci d'avance, et excusez mes explications brouillons, le problème bien qu'étant simple n'est pas si évident à expliquer ^^

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France, Aube (Champagne Ardenne)

    Informations forums :
    Inscription : Décembre 2009
    Messages : 24
    Points : 28
    Points
    28
    Par défaut
    La solution à ton problème se trouve dans PHP 5.3.

    - Tu en disposes: il faut juste modifier ta syntaxe dans ta classe abstraite afin d'effectuer une résolution statique à la volée).
    - Tu n'en disposes pas, alors pas de solution à ton problème (à ma connaissance) à part passer sur 5.3 :/

    Regardes par ici:
    http://www.php.net/manual/fr/languag...c-bindings.php

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2009
    Messages : 67
    Points : 67
    Points
    67
    Par défaut
    Merci pour cette réponse,
    après discussion avec un ami informaticien, une autre alternative m'a été proposé et j'ai jugé bon de vous en faire profiter ^^
    il m'a proposé d'utiliser la fonction get_called_class().

    C'est d'ailleurs ce que je vais utiliser car ca m'a l'air plus simple

    Merci dans tout les cas !

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France, Aube (Champagne Ardenne)

    Informations forums :
    Inscription : Décembre 2009
    Messages : 24
    Points : 28
    Points
    28
    Par défaut
    Cette fonction est liée au late static binding et a été introduite avec PHP 5.3, tu peux donc soit utiliser static ou appeller cette fonction

  5. #5
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2009
    Messages : 67
    Points : 67
    Points
    67
    Par défaut
    Ok merci,
    J' vais utiliser cette fonction, ca simplifiera mon code je pense ^^

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

Discussions similaires

  1. Appel d'une méthode d'une classe A dans une classe B
    Par halloumiali dans le forum Général Java
    Réponses: 1
    Dernier message: 16/04/2012, 00h30
  2. Réponses: 7
    Dernier message: 05/04/2011, 17h19
  3. Réponses: 21
    Dernier message: 14/01/2010, 12h50
  4. Réponses: 15
    Dernier message: 28/04/2009, 07h26
  5. Réponses: 6
    Dernier message: 30/03/2009, 18h13

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