#24670 [Opn->Fbk]: defining __call requires __sleep for serialize/session
| From: | vrana@php.net | Date: | Thu, 14 Apr 2005 08:23:33 +0000 |
| Subject: | #24670 [Opn->Fbk]: defining __call requires __sleep for serialize/session | ||
| References: | 1 | Groups: | php.doc |
| Request: | Send a blank email to phpdoc+get-969367819@lists.php.net to get a copy of this message | ||
ID: 24670
Updated by: vrana@php.net
Reported By: tater at potatoe dot com
-Status: Open
+Status: Feedback
Bug Type: Documentation problem
Operating System: OS X 10.2
PHP Version: Irrelevant
New Comment:
It seems that classes with __call or __sleep (!) methods simply can't
be serialized (serialize() returns "N;" for them). If you can reproduce
it, please change the Category of this bug to Zend Engine 2 problem.
And fill in your PHP Version, please.
Previous Comments:
------------------------------------------------------------------------
[2005-04-01 13:52:48] maka3d at yahoo dot com dot br
Does there is a workaround to this?
I did some tests but didn't work?
I thought it would be fixed until 5.0.4
------------------------------------------------------------------------
[2004-05-17 23:28:58] magicking89 at hotmail dot com
I have the same problem with PHP5 RC2 on Mac Os X 10.2 It's a real
problem because I must to close socket with __sleep but it doesn't work
correctly...
------------------------------------------------------------------------
[2003-07-16 01:07:06] tater at potatoe dot com
Description:
------------
If you create a __call() method for a class, and then try to serialize
it yourself, or store an object of that class in $_SESSION, you need to
either explicitly define a __sleep() method as well, or make sure that
__call() will respond appropriately. Otherwise serialize() will
complain. It seems unlikely that this is a bug, though I suppose it
might be a feature request. So it should just be spelled out in the
documentation for __call() when that gets written.
Reproduce code:
---------------
class foo { function __call() { return; } }
$a = new foo;
serialize($a);
Expected result:
----------------
n/a
Actual result:
--------------
n/a
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=24670&edit=1