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 :

Instanciation classe perso : portée de variables entre différents fichiers


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 163
    Par défaut Instanciation classe perso : portée de variables entre différents fichiers
    Bonjour,

    J'ai un fichier test2.php qui contient ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php 
    include($_SERVER['DOCUMENT_ROOT'].'/scripts/global.php');
    echo($USER->id());
    $USER = new user(2);
    echo($USER->id());
    ?>
    Dans le fichier global.php, j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    require_once('class_user.php');
    if (!isset($USER)) $USER=new user(0); // le problème semble être ici : on dirait qu'il le fait à chaque fois que la page est chargée !!
    Actuellement, la classe user est très simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class user{
    	private $_id = 0;
     
    	public function __construct($userid=0){
    		$this->_id = $userid;
    	}
     
    	public function id(){
    		return $this->_id;
    	}
    }
    Quand je charge la première fois la page test2.php dans mon navigateur, il affiche très normalement "02" : le premier 0 correspond à l'id de l'instance $USER initialisée pour la première fois dans global.php. Puis le 2 correspond à l'affichage de l'id de l'instance $USER initialisée par "$USER = new user(2);". OK.

    Puis je recharge la page et là, je m'aperçois qu'il écrit ENCORE 02... alors que l'objet $USER, initialisé pour la première fois dans global.php, n'aurait pas dû être réinitialisé une seconde fois à cause de la condition isset...

    Comment faire pour déclarer la variable $USER dans globals.php (sans toutefois l'écraser si elle a déjà été instanciée), puis qu'elle soit instanciée et écrasée par $USER = new user(2); dans le test2.php ?

    Merci pour votre attention et pour votre aide...

    T.

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 420
    Par défaut
    Ben oui si tu recharges la page, tout le processus est réinitialisé.

    Il faut utiliser des variables de session si tu veux pouvoir mémoriser l'état d'une variable après un rafraichissement de la page.

Discussions similaires

  1. "Partager" des variables entre différents fichiers
    Par clairetj dans le forum Langage
    Réponses: 8
    Dernier message: 04/02/2014, 11h04
  2. Portée des variables entre classes
    Par Gnifrus dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 03/03/2013, 14h37
  3. JSP : Passage de variables entre différents blocs
    Par Bali8 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 31/08/2009, 21h34
  4. Réponses: 2
    Dernier message: 30/09/2006, 22h36
  5. Portée de variable dans différents projets
    Par beb30 dans le forum MFC
    Réponses: 5
    Dernier message: 03/07/2006, 14h31

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