RE: Save classes to db?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi again!

I apologize for typing _wake (I meant __wakeup)

I search for __sleep on the php.net - site, but I also search for functions.. When I did that I came to function "sleep" which is a totally diffrent thing... 

Thanx for making clearer! Now I think I get it! 

Thanx a lot!

Best regards
/Gustav Wiberg

 

-----Original Message-----
From: Stut [mailto:stuttle@xxxxxxxxx] 
Sent: Tuesday, June 26, 2007 4:33 PM
To: Gustav Wiberg
Cc: 'Dale Attree'; ''php windows''
Subject: Re:  Save classes to db?

Gustav Wiberg wrote:
> Hi again!
> 
> I really can't find a manual for __sleep on the php.net site!? But I understand that __sleep is called before serialize and __wakeup is called before unserialize?

My bad, it's __wakeup not __wake. But still, a quick search of php.net 
for __sleep found this...

http://php.net/oop.magic-functions

> Do you mean that I create a function __sleep in my class where I serialize my object and create a function __wakeup in my class where i unserialize my object?

No. Read that manual page because it explains it quite well. You 
implement __sleep and __wakeup in your class. Then, when you call 
serialize it calls __sleep before serializing that object, and when you 
call unserialize it calls __wakeup.

You *do not* call serialize and unserialize inside your class to do 
anything to an instance of that class (well, you can but that just 
complicates the point).

> I was looking for a way to achieve this: (This maybe isn't possible?)
> 
> 1. Save the serialized object into the database.
> 2. Load the serialized object from database and unserialize and USE it. 
> (The problem is to USE it). 

Simple. Say you have $obj which is an instance of the Widget class.

$obj_serialized = serialize($obj);
mysql_query('insert into ... set obj = 
"'.mysql_real_escape_string($obj_serialized).'" where ...');

Then to read it simply do the select to get the serialized data. Let's 
say you put it into a variable called $obj_serialized.

$obj = unserialize($obj_serialized);

You can now use $obj in exactly the same way as you ever would.

$obj->Method('apples', 'pears', 'me', 'old', 'china');

I apologise for confusing things by mentioning sleep and wakeup. These 
methods allow you to write code that will get executed when an instance 
of your class gets serialized or unserialized. For most classes this 
will not be needed.

However, say for example you were writing a DB abstraction class. Since 
a DB connection is a resource it will not be stored when serialized. 
Therefore you can use an __sleep method to gracefully disconnect the 
object from the database when serialized, and __wakeup to reconnect it 
when unserialized.

I hope that makes a bit more sense.

-Stut

-- 
http://stut.net/

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

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



[Index of Archives]     [PHP Home]     [PHP Users]     [PHP Database Programming]     [PHP Install]     [Kernel Newbies]     [Yosemite Forum]     [PHP Books]

  Powered by Linux