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 de Session modifiée je ne sais comment


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 187
    Points : 74
    Points
    74
    Par défaut Variable de Session modifiée je ne sais comment
    Bonjour, je suis sur un dilemme (j'ai ce code ci dessous) et il se trouve que lors du print_r du bas, les valeurs modifiées par la fonction de calcule stoké dans mReturn sont appliquer a la variable de session correspondante ce que je ne comprend pas... Si quelqu'un a une idée... Merci

    Exemple : mReturn[header] prend les valeurs par defaut dans $_SESSION[doc_depend] (du header correspondant), la fonction de calcule (calc_element_position) change la valeur de "x" (genre de 10 a 15) seulement la valeur est bonne dans mReturn[header] mais elle est ossi modifier dans $_SESSION[doc_depend] (du header correspondant)...

    On diré que quand je fais "mReturn[header] = $_SESSION[doc_depend] (du header correspondant)" ca ce link...

    Je comprend pas...

    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
     
    public function ajusteMiseEnPage() {
        $mReturn=array();
        if($this->idEnteteDePage && isset($_SESSION['doc_depend']->enteteDePage[$this->idEnteteDePage])) {
          $mReturn['header'] = $_SESSION['doc_depend']->enteteDePage[$this->idEnteteDePage];
        }
        if($this->idPiedDePage && isset($_SESSION['doc_depend']->piedDePage[$this->idPiedDePage])) {
          $mReturn['footer'] = $_SESSION['doc_depend']->piedDePage[$this->idPiedDePage];
        }
        if(isset($mReturn['header']) && isset($mReturn['footer'])) {
          $aSide = array('mgTop','mgBottom','mgLeft','mgRight');
          print_r($_SESSION['doc_depend']->enteteDePage);
          print_r($mReturn['header']);
          foreach($aSide as $sSide) {
            if($mReturn['header']['prop'][$sSide] > $mReturn['footer']['prop'][$sSide]) {
              $iEcart = $mReturn['header']['prop'][$sSide] - $mReturn['footer']['prop'][$sSide];
              $mReturn['header']['prop'][$sSide] = $mReturn['footer']['prop'][$sSide];
              $this->format->{$sSide} = $mReturn['header']['prop'][$sSide];
              if($sSide=='mgTop' || $sSide=='mgLeft') {
                $mReturn['header'] = calc_element_position($mReturn['header'],$sSide,$iEcart);
              }
            }elseif($mReturn['footer']['prop'][$sSide] > $mReturn['header']['prop'][$sSide]) {
              $iEcart = $mReturn['footer']['prop'][$sSide] - $mReturn['header']['prop'][$sSide];
              $mReturn['footer']['prop'][$sSide] = $mReturn['header']['prop'][$sSide];
              $this->format->{$sSide} = $mReturn['footer']['prop'][$sSide];
              if($sSide=='mgTop' || $sSide=='mgLeft') {
                $mReturn['footer'] = calc_element_position($mReturn['footer'],$sSide,$iEcart);
              }
            }
            print_r($_SESSION['doc_depend']->enteteDePage);
            print_r($mReturn['header']);
          }
        }
        return $mReturn;
      }

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 187
    Points : 74
    Points
    74
    Par défaut Reponse
    Solution trouvé :

    En fait dans ma session il y a des objets. C'est dans c'est objet que la valeur est modifiée du coup depuis php 5 on a reference dans les affectactions au niveau des objet, meme si ceux ci sont en profondeur dans la session.

    Solution : Faire l'affectation, initialisé la variable mere des objets (genre = array()) et faire un foreach sur les objet de la session en les attribuants a la variable de depart en faisant clone.

    du coup le code deviens :

    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
     
    $mReturn=array();
        if($this->idEnteteDePage && isset($_SESSION['doc_depend']->enteteDePage[$this->idEnteteDePage])) {
          $mReturn['header'] = $_SESSION['doc_depend']->enteteDePage[$this->idEnteteDePage];
          $mReturn['header']['data'] = array();
          foreach($_SESSION['doc_depend']->enteteDePage[$this->idEnteteDePage]['data'] as $sKey => $oElem) {
            // Objet dans session doit etre clone meme par une variable partielle car reference depuis php 5
            $mReturn['header']['data'][$sKey] = clone $oElem;
          }
        }
        if($this->idPiedDePage && isset($_SESSION['doc_depend']->piedDePage[$this->idPiedDePage])) {
          $mReturn['footer'] = $_SESSION['doc_depend']->piedDePage[$this->idPiedDePage];
          $mReturn['footer']['data'] = array();
          foreach($_SESSION['doc_depend']->piedDePage[$this->idPiedDePage]['data'] as $sKey => $oElem) {
            // Objet dans session doit etre clone meme par une variable partielle car reference depuis php 5
            $mReturn['footer']['data'][$sKey] = clone $oElem;
          }
        }

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

Discussions similaires

  1. Valeur d'un variable de session modifiée
    Par waxman1 dans le forum Langage
    Réponses: 2
    Dernier message: 19/11/2006, 14h22
  2. variable de session modifier panier
    Par babafredo dans le forum Langage
    Réponses: 5
    Dernier message: 06/06/2006, 04h08
  3. [2.0] Comment utiliser les variables de session ?
    Par batosai dans le forum ASP.NET
    Réponses: 11
    Dernier message: 03/05/2006, 16h49
  4. Comment faire une variable de session correctement
    Par Battosaiii dans le forum Servlets/JSP
    Réponses: 14
    Dernier message: 10/04/2006, 22h46
  5. Réponses: 9
    Dernier message: 06/02/2006, 15h12

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