Objekte in $_SESSION – Vermeiden von __PHP_Incomplete_Class

Ansich ist das Vorgehen ein Objekt in $_SESSION zu speichern eine tolle Idee.

session_start();
require_once( 'ClassFile.php' );
$o = new ClassFile ();
$_SESSION['model'] = $o;

Man kann damit ein serialisiertes PHP – Objekt einfach per Sessionvariable über Requests hinweg mitführen und bei Bedarf das Objekt wieder auslesen:

if (isset ($_SESSION['model']) && is_a($_SESSION['model'], 'ClassFile'))
$o_new = $_SESSION['model'];

Allerdings wird dies fehlschlagen, da die Prüfung is_a false ergibt. Der Grund: get_class ($_SESSION[‘model’]) liefert __PHP_Incomplete_Class.
Begeben lässt sich das indem man das Einbinden der Datei, die die Klasse enthält vor dem Starten der Session setzt. Es müsste also so aussehen:

require_once( 'ClassFile.php' );
session_start();
$o = new ClassFile ();
$_SESSION['model'] = $o;

Nun liefert get_class ($_SESSION[‘model’]) die richtige Klasse und das Objekt ist sauber in der Session serialisiert.



Als erster einen Kommentar schreiben.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert