|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2001-11-18 01:31 UTC] sebastian@php.net
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Thu Nov 27 18:00:01 2025 UTC |
I saw many reports about object serialization/unserialization and I want to clarify what I understood. Let's say you have the file 'foo.php' that defines the class 'foo': <?php class foo { var $bar = 0; function foo() { $this->bar = 1; } } ?> and another file that uses this class: <?php include_once 'foo.php'; start_session(); if(!isset($f)) { $f = new foo(); session_register('f'); print "New object<br>"; } else { $f->bar = 5; print "Object from session<br>"; } ?> This code works, but if I: 1) put start_session() BEFORE the inclusion of foo.php 2) execute some code BEFORE the inclusion of foo.php 3) set session.auto_start to 1 in php.ini I will receive this error: Fatal error: The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition foo of the object you are trying to operate on was loaded _before_ the session was started in ... This is due to the fact that in the moment you execute even a single line of code php starts the unserialization. In practice, with this behaviour, it's impossible to work with object in session with session.auto_start set. Will there be a workaround or a solution to this problem?