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 :

Comment accéder aux variables du programme appelant ?


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2009
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2009
    Messages : 273
    Par défaut Comment accéder aux variables du programme appelant ?
    Bonjour,

    Je suis en train d'essayer de me faire un affichage efficace en cas d'erreur en définissant un error handler de mon cru :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function onError($errno, $errstr, $errfile, $errline)
      {
       ..........
      echo "<br><b>Erreur : <span style='color:red;'>$errstr</SPAN></b>";
      echo "<br><b>Fichier :</b> $errfile, ligne $errline";
      echo "<br><b>Variables : </b>";
      dump_debug (get_defined_vars());
      echo "<br><b>Fichiers inclus : </b>";
      dump_debug (get_included_files ());
      return true;
      }
    set_error_handler ("onError", E_ALL);
    Le problème, c'est que get_defined_vars me liste seulement les variables définies dans la fonction onError. Ce que je voudrais, ce sont les variables du script qui a provoqué l'erreur.
    Comment est-ce qu'on peut faire ?

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2009
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2009
    Messages : 273
    Par défaut
    avec $GLOBALS
    Ok, avec GLOBALS j'ai bien mes variables, mais il y a un problème : il semble que GLOBALS se mord la queue, en d'autre termes elle se contient elle-même, ce qui provoque une itération infinie de la fonction dump. Bon, je l'ai bloquée après le quatrième niveau, mais si jamais j'ai une structure à plus de 4 niveaux, je ne les verrai pas.

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unset($GLOBALS['GLOBALS']);
    Ou quelque chose de ce genre.

  5. #5
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2009
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2009
    Messages : 273
    Par défaut
    J'ai essayé mais ça rend GLOBALS NULL au niveau zéro... bizarre.
    J'ai fini par m'en tirer à l'aide d'un test if ($key !== "GLOBALS") dans ma fonction de dump.

    Merci.

  6. #6
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2009
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2009
    Messages : 273
    Par défaut Comment accéder aux variables de la FONCTION appelante ?
    Bonjour,
    Je relance cette discussion parce que j'aurais besoin d'accéder non pas aux variables du script de base, mais à celle de la fonction de niveau supérieur, quelque soit ce niveau. $_GLOBALS ne convient pas dans ce cas-là.
    Par exemple, j'ai une fonction f1 () qui appelle f2() qui appelle f(3),... Je voudrais que f3 () puisse accéder aux variables définies dans f2 ().
    Je sais que je pourrais définir dans f3 () les variables de f(2) comme globales, mais le problème, c'est que f3 () peut être appelée de n'importe quelle fonction et ne connaît pas les variables qui peuvent y avoir été définies.

    Alors est-ce qu'il y a un truc ?

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 15/06/2007, 17h43
  2. Comment accéder aux composants du module de données distant ?
    Par bds2006 dans le forum Bases de données
    Réponses: 1
    Dernier message: 23/06/2006, 00h47
  3. Relation ! schéma ! comment accèder aux données ?
    Par julien.63 dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 20/06/2006, 21h14
  4. comment accéder aux pixels d'une image
    Par young077 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 25/04/2006, 07h57
  5. Réponses: 9
    Dernier message: 03/12/2004, 11h35

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