[nycphp-talk] Incomplete Objects, Class Definitions and require_once
Mark Armendariz
lists at enobrev.com
Thu Aug 9 09:01:30 EDT 2007
Michael B Allen wrote:
>> Well I figured out what the problem was. I was putting an 'Auth'
>> object in the session. I made some changes to something that
>> invalidated the class definition of that object. As soon as I logged
>> out the Auth object in the session was reinstantiated and the error
>> went away. No big deal.
>>
> It seems you must require_once the class of the object stored in the session before
> calling session_start. I guess session_start is deserializing things
> and if the class definition isn't available it defaults to an
> incomplete type.
The problem has to do with serializing/unserializing objects (which
sessions do in the background).
When you serialize an entire class, it only saves the classes
properties, not the methods within. (open up a serialized object file to
see what i mean). When you unserialize it, you'll be creating a
variable with all the properties of a class. If you've defined that
class (in your case, by requiring the class file before unserializing
it), it will instantiate the class and fill in the proper properties and
then put it into your variable. Otherwise it will create an
'incomplete' class that only has the same name and all the saved
properties, but no methods.
Here's some other info on the subject as well
http://www.php.net/manual/en/language.oop.serialization.php
Mark Armendariz
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.nyphp.org/pipermail/talk/attachments/20070809/6a288679/attachment.html>
More information about the talk
mailing list