Edit report at http://bugs.php.net/bug.php?id=52604&edit=1
ID: 52604
Comment by: isaiah dot derosewilson at kohanaphp dot com
Reported by: zerspam at mail dot ru
Summary: Serialization of objects with __sleep() and fatal
error
Status: Open
Type: Bug
Package: Session related
Operating System: irrelevant
PHP Version: Irrelevant
Block user comment: N
New Comment:
I also have this same problem. I've tested both php 5.2.12 and 5.3.3 and
neither of them correctly serialize the object when there is a fatal
error - the whole object gets serialized when there is a fatal error
instead of just the properties in __sleep(). However if your class
implements Serializable everything works as expected when there is a
fatal error.
Previous Comments:
------------------------------------------------------------------------
[2010-09-05 13:32:43] zerspam at mail dot ru
Well, 3 weeks left and even no comments from dev team?
------------------------------------------------------------------------
[2010-08-14 09:40:26] zerspam at mail dot ru
Description:
------------
Seems like __sleep() does not being invoked when fatal error was risen.
Test script:
---------------
set_error_handler('my_error_handler');
session_start();
$obj = new myclass();
$_SESSION['obj'] = $obj;
$a->b();
class myclass
{
private $a = 1;
private $b = 2;
public function __sleep()
{
return array('a');
}
}
function my_error_handler($code, $error, $file = NULL, $line = NULL)
{
throw new ErrorException($error, $code, 0, $file, $line);
}
Expected result:
----------------
Object with only 'a' property in session file
Actual result:
--------------
Object with 'a' and 'b' properties in session file
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/bug.php?id=52604&edit=1