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

 ID:                 35895
 Comment by:         info at strictcoding dot co dot uk
 Reported by:        f dot hardy at origami-systems dot com
 Summary:            __sleep and private property
 Status:             No Feedback
 Type:               Bug
 Package:            Scripting Engine problem
 Operating System:   Freebsd 6
 PHP Version:        5.1.2
 Block user comment: N
 Private report:     N

 New Comment:

Same problem, 5 years later. Could anyone re-open this bug?

PHP 5.3.5, Windows.


Previous Comments:
------------------------------------------------------------------------
[2011-02-20 16:35:47] somiara at hotmail dot com

No comment. Same problem. 2011...



Apache/Windows: php-version 5.2.4

Apache/RH: php-version 5.3.1



Notice: serialize() [function.serialize]: "module_instancename" returned
as member variable from __sleep() but does not exist in...

------------------------------------------------------------------------
[2006-09-01 01:00:00] php-bugs at lists dot php dot net

No feedback was provided for this bug for over a week, so it is
being suspended automatically. If you are able to provide the
information that was originally requested, please do so and change
the status of the bug back to "Open".

------------------------------------------------------------------------
[2006-08-24 10:11:37] tony2...@php.net

Thank you for this bug report. To properly diagnose the problem, we
need a short but complete example script to be able to reproduce
this bug ourselves. 

A proper reproducing script starts with <?php and ends with ?>,
is max. 10-20 lines long and does not require any external 
resources such as databases, etc. If the script requires a 
database to demonstrate the issue, please make sure it creates 
all necessary tables, stored procedures etc.

Please avoid embedding huge scripts into the report.



------------------------------------------------------------------------
[2006-08-24 09:47:27] f dot hardy at origami-systems dot com

Bug is always alive in php 5.1.5 under freebsd 6.0.

------------------------------------------------------------------------
[2006-06-18 17:43:46] jona at oismail dot com

Reproduced on Windows 2000 when using __sleept() with aggregated objects
as private memembers.

The bug has been reproduced in both PHP 5.2-dev (from link below) and
PHP 5.1.4.



The following script can be used to reproduce the error:

<?php

class TestParent

{

        private $parentPrivateVar;

        protected $parentProtectedVar;

        public $parentPublicVar;

        

        public function __construct($private, $protected, $public)

        {

                $this->parentPrivateVar = $private;

                $this->parentProtectedVar = $protected;

                $this->parentPublicVar = $public;

        }

        

        function __sleep()

        {

                return array("parentPrivateVar", "parentProtectedVar",
"parentPublicVar");

        }

}



class TestChild extends TestParent

{

        private $childPrivateVar;

        protected $childProtectedVar;

        public $childPublicVar;

        

        public function __construct($private, $protected, $public)

        {

                $this->childPrivateVar = "child_". $private;

                $this->childProtectedVar = "child_". $protected;

                $this->childPublicVar = "child_". $public;

                

                parent::__construct("parent_". $private, "parent_". $protected,
"parent_". $public);

        }

        

        function __sleep()

        {

                return array_merge(array("childPrivateVar", "childProtectedVar",
"childPublicVar"), parent::__sleep() );

        }

}



class WebSession

{

        private $privateVar;

        private $privateAggregatedObject;

        

        public function __construct($private, TestChild &$o)

        {

                $this->privateVar = $private;

                $this->privateAggregatedObject = $o;

        }

                

        public function __sleep() { return array("privateVar",
"privateAggregatedObject"); }



        public function getPrivateVar() { return $this->privateVar; }

                

        public function getObject() { return $this->privateAggregatedObject; }

}



// Report simple running errors

error_reporting(E_ERROR | E_PARSE | E_WARNING | E_NOTICE | E_STRICT |
E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE);



// Start user session

session_start();



if(isset($_SESSION['obj_Info']) === false)

{

        $_SESSION['obj_Info'] = new WebSession("private variable", new
TestChild("private", "protected", "public") );

}



echo "<pre>";

var_dump($_SESSION['obj_Info']);

echo "</pre>";

echo "<hr />";

echo "TEST: ". $_SESSION['obj_Info']->getPrivateVar() ."<br />";

echo "OBJECT: ". $_SESSION['obj_Info']->getObject() ."<br />";

echo "OBJECT PUBLIC VAR: ".
$_SESSION['obj_Info']->getObject()->childPublicVar ."<br />";

?>



GIVES THE FOLLOWING OUTPUT IN PHP 5.1.4:

object(WebSession)#1 (2) {

  ["privateVar:private"]=>

  string(16) "private variable"

  ["privateAggregatedObject:private"]=>

  object(TestChild)#2 (6) {

    ["childPrivateVar:private"]=>

    string(13) "child_private"

    ["childProtectedVar:protected"]=>

    string(15) "child_protected"

    ["childPublicVar"]=>

    string(12) "child_public"

    ["parentPrivateVar:private"]=>

    string(14) "parent_private"

    ["parentProtectedVar:protected"]=>

    string(16) "parent_protected"

    ["parentPublicVar"]=>

    string(13) "parent_public"

  }

}



TEST: private variable

OBJECT: Object id #2

OBJECT PUBLIC VAR: child_public



Notice: Unknown: "parentPrivateVar" returned as member variable from
__sleep() but does not exist in Unknown on line 0



The notice is only thrown on the initial run with "parentPrivateVar" is
actually set.

The notice is not thrown if "parentPrivateVar" is null.



In PHP 5.2-dev the scrip dies line 76: echo "OBJECT: ".
$_SESSION['obj_Info']->getObject() ."<br />";

The notice is still thrown when "parentPrivateVar" is set though.

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


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/bug.php?id=35895


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

Reply via email to