Avatar billede vladpetersen Nybegynder
20. maj 2006 - 10:48 Der er 1 kommentar og
1 løsning

array af objekter i sessionvariabel

Hey,
Sidder og bakser med et cms agtigt system lavet i OO php, og jeg forsøger at gemme en række aktivitetsobjekter i array i en sessionvariabel.
Samtidig har jeg en samtidighedslås i databasen der sørger for at hvis der er ændret i databasen opdateres arrayet med de nye data fra databasen.

Mit problem er nu, at jeg godt kan få vist data fra min sessionvariabel, hvis jeg lige har oprettet dem f.eks på denne måde:

$aktivitet = new Aktivitet();
$_SESSION['aktiviteter'][] = $aktivitet;

Men når jeg så på et senere tidspunkt (nærmere betegnet ved reload af siden) hvor der ikke er ændret i databasen får jeg følgende fejl:
href='function.visAlleAktiviteter'>function.visAlleAktiviteter</a>]: The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition &quot;Aktivitet&quot; of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in

Altså som om at php ikke er klar over hvor typedefinitionen ligger henne - er der nogen måde at man kan få en form for typecast ind over?

Koden der går galt:
if ($succes)
        {
                          foreach($_SESSION['aktiviteter'] as $aktivitet)
            {
                 
                  echo $aktivitet;
                  $htmlstreng .= "<p> <H3>";
                  $htmlstreng .= $aktivitet->getOverskrift()."</H3>";
                  $htmlstreng .= "<i>Tidspunkt: ".$aktivitet->getTidspunkt()."</i><br/>";
                  $htmlstreng .= $aktivitet->getBeskrivelse();
                  $htmlstreng .= "</p><br/><br/>";
            }
            return $htmlstreng;
        }
Avatar billede jonas82 Nybegynder
20. maj 2006 - 10:57 #1
Du skal serialize aktivitet objektet før det kommer i sessionen.

Se på funktionerne serialize() og unserialize().
Avatar billede vladpetersen Nybegynder
20. maj 2006 - 11:39 #2
Hmm, fandt selv løsningen - det er dog ikke serialize, php er tydeligvis ikke glad for at unserialize objekter (eller også er det bare mig der gør det forkert - også en meget sandsynlig mulighed...)

Løsningen på mit problem lå i placeringen af min session_start()

Da jeg arbejder ud fra et facade mønster har jeg includes inden i includes, hvilket i sidste ende resulterede i at jeg havde min definition af klassen Aktivitet efter min session blev påbegyndt - dummeslag til mig pga. irriterende fejl!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester