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 :

[Système] référence sur fonction


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 5
    Points : 3
    Points
    3
    Par défaut [Système] référence sur fonction
    Bonjour à tous amis développeurs.
    Je cherche à créer une référence sur une fonction, mais via une variable protected.
    Un exemple vaut mille mots :

    class A {
    protected $specificHello;

    function sayHello(){
    if (isset($this->specificHello)) {
    $this->specificHello();
    }
    else
    echo "Default hello : hello world ";
    }
    }

    class B extends A {
    function ditSalut() {
    echo "Salut tout le monde ";
    }
    function __construct() {
    $this->specificHello = &$this->ditSalut();
    }

    }

    $class = new B;
    $class->sayHello();
    Ce bout de code me donne :
    "Salut tout le monde Default hello : hello world "

    Je ne parviens pas à initialiser correctement la variable $specificHello. Au lieu de ça, mon affectation "= &$this->ditSalut();" exécute ditSalut.

    Une idée?

    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    je ne sais pas si les références de fonctions existent en PHP...

    cependant, essaie ceci :
    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
    class A {
    protected $specificHello;
     
    function sayHello(){
    if (!empty($this->specificHello)) {
    $this->{$this->specificHello}();
    }
    else
    echo "Default hello : hello world ";
    }
    }
     
    class B extends A {
    function ditSalut() {
    echo "Salut tout le monde ";
    }
    function __construct() {
    $this->specificHello = "ditSalut";
    }
     
    }
     
    $class = new B;
    $class->sayHello();
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Ben oui, ça fonctionne.
    Par contre, je ne comprends pas cette ligne :
    $this->{$this->specificHello}();
    Tu pourrais me l'expliquer?

  4. #4
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    http://fr.php.net/manual/fr/language.oop5.php le commentaire tout en bas

    en gros, ça va appeller sur $this la fonction dont le nom est dans $this->specificHello
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Après un nouveau test, je pense effectivement que les références sur les fonctions n'existent pas.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Merci pour l'info Swoog. J'ai appris un truc.

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

Discussions similaires

  1. référence sur retour de fonction
    Par Yoxoman dans le forum Langage
    Réponses: 1
    Dernier message: 25/05/2010, 17h39
  2. Réponses: 1
    Dernier message: 29/02/2008, 14h18
  3. [Système] Explications sur la fonction header()
    Par QuenTinO dans le forum Langage
    Réponses: 1
    Dernier message: 28/08/2007, 09h45
  4. [Système] avis sur fonction recursive
    Par feydakine dans le forum Langage
    Réponses: 2
    Dernier message: 24/06/2007, 10h36
  5. Réponses: 1
    Dernier message: 17/10/2005, 22h47

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