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 :

Accès tableau dans un autre fichier


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2010
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 41
    Points : 29
    Points
    29
    Par défaut Accès tableau dans un autre fichier
    Bonjour @ tous.
    J'espère avoir posté dans le bon forum, sinon excuses... :-)

    Problème.
    -Fichier A: monfichiera.php contient $monarray = array();
    -Fichier B: routines principales. mesroutines.php

    Si j'écris:
    mesroutines.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    include "monfichiera.php";
    bla...bla..
    $manouvellevar = $monarray [0];
    Cela fonctionne parfaitement... :-) merci...!

    Par contre si j'écris:

    mesroutines.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    include "monfichiera.php";
    bla...bla..
    function mafunc() {
      bla...bla..
      $manouvellevar = $monarray [0];
      bla...bla..
    }
    J'obtiens une "Notice: Undefined variable $manouvellevar" et $monarray [0]
    n'est pas renvoyé.

    L'utilisation de global $var ne résoud pas le pb.

    Merci pour tout avis avisé.

    Cordialement.

    -= Guy =-

  2. #2
    Membre averti

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 242
    Points : 354
    Points
    354
    Par défaut
    Hé bien si chez moi ça passe avec global !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php 
     
    include "monfichiera.php";
     
    function mafunc() {
      global $monarray;
      $manouvellevar = $monarray [0];
      var_dump($manouvellevar);
    }
     
    mafunc();
     
    ?>
    Si ça ne fonctionne pas chez toi, vérifie bien que ton "monarray" n'est pas réaffecté en cours de route dans le "bla bla".

    Cela dit, pose-toi bien la question du pourquoi tu as besoin d'une variable globale, car en générale, ce n'est pas une bonne manière de faire.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Décembre 2010
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 41
    Points : 29
    Points
    29
    Par défaut
    Merci Climoo;

    Effectivement je n'utilisais pas ma global comme il convient.

    Cela fonctionne maintenant.

    Cependant si une global n'est pas convenable comment obtenir convenablement
    le même résultat???

    Merci encore, Cordialement.

    -= Guy =-
    PS: Je mettrai [résolu] sous peu.

  4. #4
    Membre averti

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 242
    Points : 354
    Points
    354
    Par défaut
    A défaut d'avoir le contexte de ton programme, je dirai que le plus simple est encore de la passer en paramètre, avec éventuellement le "&" si elle est modifiée à l'intérieure de ta fonction... Mais si c'est vraiment une variable que tu vas utiliser partout, ça risque de devenir très lourd de la mettre à chaque fois (et donc dans ce cas, cette solution est à proscrire).

    A quoi correspond ta variable globale ?
    Est-ce un tableau avec des paramètres de configuration ?
    Dans ce cas là par exemple, tu pourrais très bien mettre en place un singleton.
    Petit exemple de code vite fait illustrant cela :
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    <?php 
     
    class ClasseGlobal {
     
    	private $attributes;
     
    	private static $instance;
     
    	public static function getInstance() {
    		if (self::$instance == NULL) {
    			self::$instance = new ClasseGlobal();
    		}
     
    		return self::$instance;
    	}
     
    	private function __construct() {
    		$this->attributes = array();
    	}
     
    	public function setAttribute($name, $value) {
    		$this->attributes[$name] = $value;
    	}
     
    	public function getAttribute($name) {
    		if (array_key_exists($name, $this->attributes)) {
    			return $this->attributes[$name];
    		}
     
    		return NULL;
    	}
    }
     
    $classGlobal = ClasseGlobal::getInstance();
    $classGlobal->setAttribute("conf1", "truc");
    echo $classGlobal->getAttribute("conf1");
     
    ?>
    C'est une méthode bien plus propre (à mon humble avis) de faire ce que tu sois, et également beaucoup plus adaptable, car tu as une classe avec les méthodes que tu veux dedans.

    L'inconvénient d'une variable globale est qu'il y a un risque pour qu'elle soit modifiée sans que tu le veuilles (par erreur), ou que cela entre en conflit avec d'autres variables locales (tu me diras, en faisant un peu attention, on ne se fait pas avoir, mais bon ...).

    A toi de voir ...

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/11/2012, 16h20
  2. [XL-2003] Stocker le chemin d'accès à un fichier dans un autre fichier.
    Par juanito37 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/07/2009, 15h10
  3. Réponses: 1
    Dernier message: 18/03/2008, 16h05
  4. Réponses: 5
    Dernier message: 04/03/2008, 22h22
  5. Pb pour se servir d'un tableau dans une autre unité
    Par libititi dans le forum Langage
    Réponses: 7
    Dernier message: 08/06/2005, 11h40

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