unvollständiges Objekt

serializable

Mitglied
Hallo zusammen,

ich habe ein Objekt, welches ich in einer Session abspeichere. Wenn ich nun auf einer anderen PHP-Seite auf dieses Objekt in der Session zugreifen möchte, ist dies nicht möglich:

object(__PHP_Incomplete_Class)#37 (11) { ["__PHP_Incomplete_Class_Name"]=>

Das liegt wohl daran, dass ein Destructor aufgerufen wird. Gibt es eine Möglichkeit, das Object, welches noch alle meine Daten enthält zu reinstantiieren, so dass ich auf dem Objekt methoden aufrufen kann?


Vielen Dank
 
OK, ziemlich blöde Sache : Wie mein name schon sagt ist Serialisierung das Stichwort, doch das funktioniert bei mir nicht einwandfrei:


Serialisieren: serialize($_SESSION[result][$i]);

Deserialisieren: $obj =& unserialize($_SESSION[result][$evid]);

Die Fehlermeldung lautet hierbei:

Warning: unserialize() expects parameter 1 to be string, object given in
 
Moin,

du musst das serializierte Objekt in der Session speichern.
Um dann wieder Zugriff auf das Objekt zu erlangen, musst du den String, der in der Session-Variablen gespeichert ist, "unserializieren".
Der Fehler bei dir dürfte daher rühren, dass du das serializierte Obejkt nochmals serializiert....dabei kann alles mögliche herauskommen, jedoch bestimmt nichts, was mit dem ursprünglichen Objekt zu Tun hat.

Kleines Beispiel:
PHP:
<?php
session_start();
class objekt
{
  function __construct($objektName)
  {
    $this->name=$objektName;
  }
  
  function getName()
  {
    return $this->name;
  }
}

if(isset($_SESSION['obj']) && is_object(@unserialize($_SESSION['obj'])))
  {
    echo "Objekt in Session gefunden:".unserialize($_SESSION['obj'])->getName();
  }
else
  {
    $_SESSION['obj']=serialize(new objekt('Testobjekt'));
    
    echo "kein Objekt gefunden, erzeuge neues Objekt und speichere in Session.";
  }
?>
 
Zuletzt bearbeitet:
Moin Sven,

danke für deine Antwort. Es hat heute gleich auf Anhieb funktioniert. Wahrscheinlich hätte ich einfach mal meinen Webserver neu starten müssen.

Was bei mir also sehr schön funktioniert ist:

PHP:
$ar = unserialize(serialize( $_SESSION[result][$evid] ));

Das schöne ist, das hierbei auch alle Funktionen zur Verfügung stehen und nicht nur die gespeicherten Werte des Objektes.

Der Zugriff mit
PHP:
  $ar -> getTown();
funktioniert wunderbar...

Dankeschön :)
 
Zurück