Re: Casting of objects to array exports private/protected data

From: Date: Wed, 21 Jan 2004 11:26:30 +0000
Subject: Re: Casting of objects to array exports private/protected data
References: 1 2 3 4 5  Groups: php.internals 
Request: Send a blank email to internals+get-7230@lists.php.net to get a copy of this message
Yeah, because it used to work. Andi At 01:19 PM 1/21/2004 +0200, Jani Taskinen wrote:
    Why not simply make the cast not work?
    Can you think of any BC problem with that? :)
    --Jani
On Wed, 21 Jan 2004, Andi Gutmans wrote: In general, I think casting an object to an array sucks. I would be all for an E_STRICT message that this is deprecated as we have "real" objects now and IMO, and that the behavior might change/go away sometime in the future. Andi At 05:07 PM 1/17/2004 +0100, Andrey Hristov wrote:
Pierre-Alain Joye wrote:
On Sat, 17 Jan 2004 16:44:29 +0100 Andrey Hristov <php@hristov.com> wrote:
IMO, when casting to array with (array) only the public-ly visible members should returned.
Dunno, E_STRICT (as you can access them without notice/warning without this flag)? In the same manner: <?php error_reporting(E_STRICT); class some {
         public $pub = 1;
         protected $prot = 2;
         private $priv = 3;
} class any extends some {
        public $pub1 = 1;
        function dump() {
                var_dump($this);
        }
} var_dump((array)new any()); $a = new any; $a->dump(); ?> a var_dump should dump protected props from the parent class as they are visible. Note the "funny" thing is that var_dump() alone do not display the public|protected props, whatever is the context call. IMHO, that sounds not very consistent, but only imho...
Yes, it does not. Use print_r() for dumping. print_r() uses internal zend function to dump the variable content while var_dump() is defined in ext/standard/var.c and knows nothing about protected and private functions (or at least it was that 2 months
ago).
print_r() has the expected behavior of dumping data, but casting to array and getting protected/private data is nasty. Andrey -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php


« previous php.internals (#7230) next »