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

PHP & Base de données Discussion :

Appel d'une fonction au nom généré dynamiquement


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé Avatar de FrankOVD
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juin 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2005
    Messages : 438
    Par défaut Appel d'une fonction au nom généré dynamiquement
    Bonjour,

    J'aimerais programmer une fonction qui fonctionne à la manière de usort(), c'est à dire qui reçoit un nom de fonction en paramètre (callback function) mais je ne sais pas comment appeler une fonction à partir de la chaîne de caractère. Comment fait-on?

  2. #2
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 890
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 890
    Par défaut
    Salut,

    Tu as la possibilité d'utiliser la fonction eval

    A+

  3. #3
    Membre Expert
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027

  4. #4
    Membre Expert

    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
    Par défaut
    A noter que tu as également la possibilité de le faire "a la sauvage" comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function plus($a, $b) {
    return $a+$b;
    }
     
    function moins($a, $b) {
    return $a-$b;
    }
     
    function test($nom, $val1, $val2) {
    return $$nom($val1, $val2);
    }
     
    echo test('plus', 1, 2);
    echo test('moins', 1, 2);

  5. #5
    Membre émérite
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Par défaut
    Fladnag : "return $nom($val1, $val2);" suffit. "$$nom" c'est dans le cas d'une variable, pas une fonction.

  6. #6
    Membre émérite
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Par défaut
    Ne pas oublier function_exists()... .. .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    return (function_exists($nom)) ? $nom($val1, $val2) : false;
    @ tchaOo°

  7. #7
    Membre Expert

    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
    Par défaut
    Citation Envoyé par Kioob
    Fladnag : "return $nom($val1, $val2);" suffit. "$$nom" c'est dans le cas d'une variable, pas une fonction.
    ouups, oui, tu as raison ;o)

  8. #8
    Membre émérite
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Par défaut
    <hors sujet on>

    Citation Envoyé par Fladnag
    Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent etre suivies de or die(mysql_error());
    Pas forcement... .. .

    <hors sujet off>

    @ tchaOo°

  9. #9
    Membre Expert

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Par défaut
    Citation Envoyé par kankrelune
    <hors sujet on>

    Pas forcement... .. .

    <hors sujet off>
    pour une gestion plus fine des erreurs et eviter de poster sur le forum des que ca plante ... SI !!

  10. #10
    Membre Expert

    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
    Par défaut
    Citation Envoyé par kankrelune
    <hors sujet on>
    Pas forcement... .. .
    <hors sujet off>
    J'ai ca nulle part dans mon code... mais pour debugger c'est bien ;o)
    moi j'ai plutot du @mysql_query($requete) or erreurSQL($requete); avec erreurSQL qui fait tout ce qui va bien : log de l'erreur dans un fichier visible de l'administrateur uniquement et affiche ou pas de l'erreur pour l'utilisateur en fonction du contexte. Ca me permet juste d'eviter de me repeter... car nombreuses sont les erreurs "invisibles" qui apparaissent avec cela ces temps ci sur le forum...

  11. #11
    Membre Expert

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Par défaut
    Citation Envoyé par Fladnag
    J'ai ca nulle part dans mon code... mais pour debugger c'est bien ;o)
    et il dit ca avec sa signature ...

    bravo pour les jeunes !!!

  12. #12
    Membre émérite
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Par défaut
    Sérieux vous faites vraiment du die() sur vos sites ?

    Perso je teste tout simplement le retour, et remonte les éventuels erreurs. Généralement ça trace en logs pour l'admin, et redirige l'utilisateur vers une page "propre".... le coup du die() c'est uniquement le strict minimum pour forcer les débutants à débugger, mais c'est très loin d'être l'idéal.

  13. #13
    Membre Expert

    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
    Par défaut
    quand tu gere un espace membre, ou que ton site est basé a 100% sur mysql et que le mysql_connect echoue... oui, on peut faire du die pour arreter le plus tot possible le traitement... ca sert a rien d'afficher une page avec 300 erreurs.

    Maintenant moi j'aime bien logger les erreurs... et faire un die() apres quand meme ;o)

  14. #14
    Membre émérite
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Par défaut
    Arreter le traitement oui, évidement, mais afficher à l'internaute une page blanche avec uniquement le message d'erreur MySQL, ça fait vraiment page perso.

  15. #15
    Membre émérite
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Par défaut
    Citation Envoyé par Kioob
    Arreter le traitement oui, évidement, mais afficher à l'internaute une page blanche avec uniquement le message d'erreur MySQL, ça fait vraiment page perso.
    +1... que ce soit avec MySQL, PostGreSQL ou une autre SGDB sur tout les site que je fais s'il y a une erreur de connection, de selection ou de requete la page s'affiche à la seule différence que pour l'utilisateur il y a un bloc affichant qu'une erreur est survenue et l'invitant à recharger la page ou à revenir dans quelques heures... c'est la moindre des choses... .. .

    la plupart des internautes quand ils visitent un site qu'il ne connaissent pas et qu'ils tombent sur une page blanche... dans un premier temps ils se demandent ce qui ce passe, dans un second temps ils trouvent ça crade ( keki s passe), et pour finir si celle ci persiste ils partent du site et bien souvent il y a peu de chance qu'ils reviennent (le site lé cassé )... .. .

    @ tchaOo°

Discussions similaires

  1. [AC-2003] Insérer un paramètre dynamique dans une macro pour l'appel d'une fonction
    Par OphyTe dans le forum Macros Access
    Réponses: 11
    Dernier message: 10/02/2015, 16h01
  2. Réponses: 5
    Dernier message: 13/04/2010, 16h30
  3. Réponses: 4
    Dernier message: 05/01/2009, 23h24
  4. Réponses: 4
    Dernier message: 18/01/2007, 06h46
  5. Appel d'une fonction C avec nom de fichier en paramètre
    Par vince3320 dans le forum Fortran
    Réponses: 4
    Dernier message: 21/11/2006, 15h58

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