It turns out when I was assigning the object to the session var, the object was not 
getting
serialized.  Serializing takes a variable and makes it into a string describing the 
variable and
the value.  This could be done for any variable type except  Resources (MySQL 
connection vars) and
Results (the result from a query).

Serialization happens automatically through the session_register() function, but you 
can only
use session_register if the the register_globals is turned on in the ini.  I would 
like to move away
from the the practice of using globals and eventually turn off the register_globals.

For some reason I tried to register my $customer object using the 
session_register("customer") and
that seem to fail (not the actual registering, but the reuse of the object) so now 
this is a solution that I
saw in the php documentation:

$customer = new Customer($_GET['facilityID'], $_GET['customerID']);
$_SESSION['acceptPayment']['serializedCustomer'] = serialize($customer);

so now when I have moved on to another page or another instance of the same page and
I want to access the object from the session var, I do so like this:

$customer = unserialize($_SESSION['acceptPayment']['serializedCustomer']);

and now you can access the object.  There is a hidden jewl about this method, I now no 
longer
have to include or require the class file because it is already defined in the 
serialized string.

Matt

Matt Silva wrote:
Hi I was wondering if anybody has any Ideas about or has experienced
this....

I create a new object and then assign it to a session var

$customer = new Customer($_GET['facilityID'], $_GET['customerID']);
$_SESSION['acceptPayment']['customer'] = $customer;

but later when I access that session var [in the the same file but in a different function and different instance], php gives me an error saying:

"The script tried to execute a methode or access a property of an incomplete object. Pleas ensure that the class definition lt;bgt;customerlt;/bgt; of the object you are trying to operate on was loaded _before_ the session was started
at <filepath>/acceptPayment.php line 103"


I did a little reading (rtfm) on php.net and saw that if session.auto_start is turned on, you couldn't use Objects with sessions. Well I checked my ini and the session.auto_start was set to 0, so I am now scratching my head in confusion.

I require_once the Customer class and start the session after the requires and includes, so then I thought ok require_once
so I change it to require and then it doesn't load the class the for some reason (sigh).


Thanks for your help in advance
Matt



--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Reply via email to