I've never seen that error message before, but I think I understand what it is saying. It sounds like you are employing a technique that is generally frowned upon because of it's dependencies and complexity. Did you inherit this code from someone else? Since it's complaining about objects loading before unserialize, I'm guessing you are passing serialized objects either through a session or directly through to other objects. An object is an instance of a class, you need to load the base class definition in order to create an instance of that class. What you are doing is passing an instance of a class without having the class loaded. The only way I know of doing this is by passing a serialized instance through a session. When it is unserialized, it doesn't have the base class available to restore the class object. So, you must load (include) the class file before you try to unserialize the instance of the class. Alternatively, you can create an __autoload function that will determine what file needs to be loaded in order to create an instance of the class to be created. This can generally be done by mapping the class name be called to the file that needs to be loaded. __autoload is generally used for dynamically loading classes so you don't load anything that you don't need.

You may connect to the database 90% of the time, but why load the database class before you need to, since you may not need to.

Hope that helps


On Aug 5, 2007, at 2:49 PM, Michael B Allen wrote:

Hi,

Every once in a while I run into this and it takes a few hours to
figure out what the right sequence of require_once statements are
required to wriggle out of it:

Notice: [...] 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_ unserialize() gets called or provide a __autoload() function
to load the class definition in [...]

Can someone explain to me what I need to know about how class
definitions are loaded so that I can make some sense of these errors?

It's not simply a matter of including the necessary file in the right
spot. Clearly there are other forces at work and I'd like to know what
they are.

Mike
_______________________________________________
New York PHP Community Talk Mailing List
http://lists.nyphp.org/mailman/listinfo/talk

NYPHPCon 2006 Presentations Online
http://www.nyphpcon.com

Show Your Participation in New York PHP
http://www.nyphp.org/show_participation.php

_______________________________________________
New York PHP Community Talk Mailing List
http://lists.nyphp.org/mailman/listinfo/talk

NYPHPCon 2006 Presentations Online
http://www.nyphpcon.com

Show Your Participation in New York PHP
http://www.nyphp.org/show_participation.php

Reply via email to