Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di citrus
    Registrato dal
    Feb 2002
    Messaggi
    774

    [AIUTO!] - oggetti che non persistono nella sessione

    aiutatemi gente ho un problema che mi sta facendo diventare matto!

    ho creato una classe tra i cui campi ho inserito un oggetto DOMDocument caricato con un xml recuperato da database.
    fin qui tutto bene...
    se all'interno del costruttore (quindi la prima volta che la classe viene richiamata) provo ad eseguire delle operazioni sull'oggetto DOM tutto funziona a meraviglia.

    una volta creata l'istanza della classe viene salvata dentro ad una variabile di sessione... e quando da un altra pagina richiamo un metodo sulla classe che va a fare delle operazioni sull'oggetto DOMDocument si blocca tutto...
    qualsiasi cosa io cerchi di fare mi dice che non riesce a fetchare il documento xml....
    come se non esistesse più....

    dopo due giorni di smadonnamenti ho pensato....
    non è che è la sessione a darmi questi problemi?????

    cioè: se provo ad accedere una proprietà normale dell'oggetto
    codice:
    session_start();
    print($_SESSION["objMYCLASS"]->nome);
    tutto fila liscio....

    se invece provo ad accedere ad un campo che è a sua volta un oggetto la cosa non funziona.....
    ...
    in pratica ho memorizzato in una variabile di sessione un oggetto che contiene a sua volta un oggetto DOM che non riesco più ad accedere, come se non resistesse alla sessione..

    è possibile???
    devo serializzare l'oggetto DOM o qualcosa del genere per far si che persista all'interno della mia classe?

    qualcuno mi spiega come funziona questa cosa?
    grazie
    citrus

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    non so come funziona per gli oggetti dom, ma per gli oggetti creati in php per fare in modo che php sappia leggerli devi includere la classe prima del session start, altrimenti rimangono degli oggetti incompleti.

    Prova a stampare con print_r il contenuto di $_SESSION e vedi cosa c'è dentro


    ciao

  3. #3
    Utente di HTML.it L'avatar di citrus
    Registrato dal
    Feb 2002
    Messaggi
    774
    eccomi:
    posto il risultato del print_r($_SESSION);
    codice:
    Array ( 
      [navBar] => Array ( ) 
    
      [objNET] => gestioneArtisti Object ( 
           [id:protected] => 2 
           [id_master_net:protected] => 1 
           [name:protected] => gestione artisti 
           [description:protected] => rete per la gestione...
           [status:protected] => attiva 
           [acl:protected] => w 
           [lock:protected] => 1 
           [objXML] => DOMDocument Object ( ) 
      ) 
    
      [prova] => prova sessione 
    )

    l'oggetto che non riesco più ad utilizzare è objXML...
    sembra che sia presente ma non si capisce se è ancora intero...

  4. #4
    Utente di HTML.it L'avatar di citrus
    Registrato dal
    Feb 2002
    Messaggi
    774
    mi correggo:
    effettivamente l'oggetto objXML sembra vuoto, infatti non viene espanso come l'oggetto objNET che lo contiene.

    ciò conferma allora il mio dubbio....
    la serializzazione degli oggetti (necessaria per il salvataggio della sessione) si ferma solamente al "primo livello".
    nel senso che se c'è un oggetto
    che contiene a sua volta un altro oggetto, quest'ultimo
    non viene serializzato e quindi non persiste nella sessione!

    ok....
    dopo due giorni ho capito l'errore....
    ma ora... come risolvo????

    qualcuno sa darmi un consiglio?

  5. #5
    non ho mai usato una cosa del genere ad essere sincero
    ad occhio e croce (la sparo li) potresti cercare di sdoppiare la cosa..

    se e' un limite di PHP non so proprio come darti un consiglio.. magari prova nelle liste inglesi..
    Carlo Denaro BlackOut

  6. #6
    Utente di HTML.it L'avatar di citrus
    Registrato dal
    Feb 2002
    Messaggi
    774
    ciao,
    purtroppo è un problema...
    cmq ho risolto con una scappatoia: memorizzo nel campo dell'oggetto solo la stringa che rappresenta l'xml invece che l'oggetto vero e proprio...
    ogni volta che un metodo deve agire sull'albero crea un istanza a parte dell'oggetto DOMDocument, carica l'xml e lo riserializza dopo che ha finito...
    in questo modo tutto sembra fungere

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.