ID:               26737
 Comment by:       albin at kth dot se
 Reported By:      rob dot wills at gmail dot com
 Status:           Critical
 Bug Type:         Zend Engine 2 problem
 Operating System: *
 PHP Version:      5.0.0
 New Comment:

What is even the point of __sleep being supposed to return an array of
the properties that should be serialized? I think it would be much
easier just to manually unset those variables that you DON'T want to
serialize, and letting PHP serialize everything else. 
I thought __sleep was supposed just to be a way of closing
database-connections etc, but due to the current implementation that
seems almost impossible.


Previous Comments:
------------------------------------------------------------------------

[2004-07-18 13:44:42] [EMAIL PROTECTED]

version info change

------------------------------------------------------------------------

[2004-07-15 12:44:57] [EMAIL PROTECTED]

Verified.
The workaround still works too.


------------------------------------------------------------------------

[2004-07-15 04:14:39] rob dot wills at gmail dot com

PHP5.0.0 still exhibits this behaviour.

Is there anything else I can provide to help with this 
issue/bug?

Thanks,

Rob

------------------------------------------------------------------------

[2004-07-13 00:10:35] trevorrowe at gmail dot com

Last posting was made on feb 26, its now jul 12. 
------------------------------------------------

Anyone have any more current news on this bug?

The bug seems to still persist in php5 rc3.  mastabog's suggestion of
padding the variable name with nulls for private, padding the * for
protected and nothing for public works, but seems like an ugly hack. 
My biggest fear is when the bug is patched, my variable names will be
double padded and things will start to break.

------------------------------------------------------------------------

[2004-02-26 21:24:38] mastabog at hotmail dot com

Complete info on this bug:

To quote "rob at cue dot cc", you don't have to enclose only the class
name with null characters. As far as I've seen you have to enclose with
null chars ALL Php5 serialization identifiers of class properties types,
the ones I figured out to be for now (let x be the property name):

- class name if x is 'private' => "\0" . __CLASS__ . "\0x"
- * if x is 'protected' => "\0*\0x"
- nothing if x is 'public' => "x"

Here's what I mean:

<?php

class aTest
{
  public $a = 'one';
  protected $b = 'two';
  private $c = 'three';
  private $d = 'something you dont wanna save';

  function __sleep()
  {
    return array("a",
                 "\0*\0b",
                 "\0aTest\0c");
    // or
    // return array("a",
    //              "\0*\0b",
    //              "\0" . __CLASS__ . "\0c");
  }
}

?>

Anything else in the return array of __sleep() and the property will
come up empty after unserialization ... not nice.

My hope is that this is a bug, cus forming those strings with null
chars is just, well, ugly :)

------------------------------------------------------------------------

The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
    http://bugs.php.net/26737

-- 
Edit this bug report at http://bugs.php.net/?id=26737&edit=1

Reply via email to