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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 187
    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 confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 187
    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, 13h22
  2. variable de session modifier panier
    Par babafredo dans le forum Langage
    Réponses: 5
    Dernier message: 06/06/2006, 03h08
  3. [2.0] Comment utiliser les variables de session ?
    Par batosai dans le forum ASP.NET
    Réponses: 11
    Dernier message: 03/05/2006, 15h49
  4. Comment faire une variable de session correctement
    Par Battosaiii dans le forum Servlets/JSP
    Réponses: 14
    Dernier message: 10/04/2006, 21h46
  5. Réponses: 9
    Dernier message: 06/02/2006, 14h12

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