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 :

Variable global inexistante


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 24
    Par défaut Variable global inexistante
    Bonjour,

    J'ai un petit soucis avec une variable globale que j'essaie de récupérer dans une fonction, voici quelques explications :

    J'ai un fichier index.php qui inclut un fichier modules.php qui lui même inclut un fichier traduction.php.
    index.php -> modules.php -> traduction.php

    J'appelle les fonctions de modules.php depuis le fichier index.php via call_user_func().

    J'aimerais utiliser dans les fonctions de mon fichier modules.php des variables qui sont en provenance de traduction.php, pour cela dans mes fonctions du fichier modules.php je déclare les variables globales que je désire, seulement pas de chance ça ne fonctionne pas !

    J'ai reproduit le même code en très simplifié ailleurs et ça fonctionne.
    Si je fais un isset() sur la variable que j'ai déclaré en global dans ma fonction, ça me retourne false...

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Par défaut
    Il faut que tu POST ton code si tu veux de l'aide, as-tu utilisé $_GLOBALS ?

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 24
    Par défaut
    J'ai essayé $_GLOBALS aussi dans la fonction mais ça ne trouve pas la variable.
    J'ai essayé d'inclure le fichier traduction.php avec autre chose que require_once() : include(), require(), c'est la même chose ça ne fonctionne pas.

    Avec le code ci-dessous, le echo de modules.php n'affiche rien. Et si je fais un isset() sur $membresLang après le global, ça me retourne false.
    Bien entendu si j'appelle cette variable en dehors de la fonction, elle est bien présente.

    Pour ce qui est du code, voici l'inclusion du fichier traduction.php depuis le fichier modules.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if(!$fileLang || !$fileClass) {
      echo "Il manque un fichier important !";
      exit;
    } else {
      require_once($fileLang);
      foreach($membresLang as $cle => $valeur) {
        define("$cle", "$valeur");
      }
      require_once($fileClass);
    }
    toujours dans ce fichier modules.php, voici ma fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function membres_main() {
      global $membresLang;
      echo $membresLang;
    }
    le fichier traduction.php contient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $membresLang = array("fr", "en");
    Il n'y a pas grand chose comme code...si il faut autre chose, dites le moi.

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Par défaut
    Réessaye plutot $_GLOBALS, tu verras ca devrait marcher comme sur des roulettes.

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 24
    Par défaut
    Je viens d'essayer à nouveau, c'est $GLOBALS au fait sans l'underscore.

    J'ai supprimé global $membresLang; du fichier module.php et j'ai remplacé le echo par echo $GLOBALS["membresLang"]; et j'ai droit à ceci comme erreur :
    Undefined index: membresLang

  6. #6
    Membre confirmé Avatar de raoulchatigre
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    99
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mars 2004
    Messages : 99
    Par défaut
    Salut,

    Je confirme c'est $GLOBALS et pas $_GLOBALS qui est bien plus facile à utiliser que le mot-clef global

    Peux-tu donner les valeurs de $fileLang et $fileClass ?

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

Discussions similaires

  1. Variable globale / Propriété des threads
    Par rgarnier dans le forum XMLRAD
    Réponses: 4
    Dernier message: 03/10/2003, 11h49
  2. Cacher Variable Url avec Variable Globale
    Par danuz dans le forum XMLRAD
    Réponses: 6
    Dernier message: 26/09/2003, 18h20
  3. Variable "globale" (dans plusieurs templa
    Par mattmat dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 17/06/2003, 20h22
  4. question sur les variables globales et les thread posix
    Par souris_sonic dans le forum POSIX
    Réponses: 5
    Dernier message: 13/06/2003, 14h59
  5. les variables globales static
    Par gRRosminet dans le forum C
    Réponses: 8
    Dernier message: 27/04/2002, 09h34

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