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 :

Constante pour atteindre une classe


Sujet :

Langage PHP

  1. #1
    Membre averti
    Avatar de cahnory
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 203
    Points : 401
    Points
    401
    Par défaut Constante pour atteindre une classe
    Bonjour à tous ! J'essaie d'atteindre une classe à l'aide d'une constante pour pouvoir facilement changer de classe (en réalité il s'agirait de changer de version d'une même classe) sans avoir à la renommer. Au départ je voulais faire comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    define('CONSTANT_CLASS_NAME', 'ClassName');
    ClassName::staticMethod();				//	Fonctionne
    {CONSTANT_CLASS_NAME}::staticMethod();	//	Ne fonctionne pas mais l'idée me plait
    La syntaxe me plait bien, elle reste simple (faut pas que chaque appel à ma classe devienne une torture) mais elle a un défaut de taille, elle ne fonctionne pas .
    Bref, je voulais savoir s'/comment il était possible de faire ce que je veux, à savoir appeller une méthode static d'une classe à partir d'une constante contenant son nom (celui de la classe).
    Merci

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    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
    class ClassName {
        static function staticMethod() {
            echo __METHOD__;
        }
    }
     
    define('CONSTANT_CLASS_NAME', 'ClassName');
     
    # PHP >= 5.3, en passant par une variable :
    $nomclasse = CONSTANT_CLASS_NAME;
    $nomclasse::staticMethod();
     
    # Sinon via call_user_func(_array) :
    /*return*/ call_user_func/*_array*/(array(CONSTANT_CLASS_NAME, 'staticMethod')/*, paramètre(s) */);
    # Avec, depuis 5.2.3, la syntaxe CONSTANT_CLASS_NAME . '::staticMethod' est possible au lieu d'un tableau
    Je fais grâce d'une solution basée sur eval et des détails concernant les espaces de noms (PHP >= 5.3).

Discussions similaires

  1. problème pour instancier une class
    Par gronaze dans le forum C++
    Réponses: 8
    Dernier message: 30/06/2006, 12h21
  2. cherche bon tuto FR pour creer une classe
    Par Lorenzo77 dans le forum Delphi
    Réponses: 3
    Dernier message: 23/06/2006, 18h27
  3. methode pour exécuter une class dans un jar
    Par yann_p dans le forum Langage
    Réponses: 2
    Dernier message: 18/04/2006, 17h47
  4. Réponses: 3
    Dernier message: 13/08/2005, 15h18
  5. Réponses: 5
    Dernier message: 26/05/2005, 15h40

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