#38935 [Ana->Csd]: Strange results for object to array cast

From: Date: Tue, 26 Sep 2006 05:54:37 +0000
Subject: #38935 [Ana->Csd]: Strange results for object to array cast
References: 1  Groups: php.doc 
Request: Send a blank email to phpdoc+get-969374098@lists.php.net to get a copy of this message
ID: 38935 Updated by: joey@php.net Reported By: marcus at synchromedia dot co dot uk -Status: Analyzed +Status: Closed Bug Type: Documentation problem Operating System: All PHP Version: 5.1.6 New Comment: This bug has been fixed in the documentation's XML sources. Since the online and downloadable versions of the documentation need some time to get updated, we would like to ask you to be a bit patient. Thank you for the report, and for helping us make our documentation better. The change should appear on the documentation next time it's built. Previous Comments: ------------------------------------------------------------------------ [2006-09-25 21:36:58] marcus at synchromedia dot co dot uk OK, Thanks for dealing with it. ------------------------------------------------------------------------ [2006-09-25 21:25:44] joey@php.net We won't mark as closed until the doc patch has actually been submitted (currently in review). ------------------------------------------------------------------------ [2006-09-25 21:20:07] marcus at synchromedia dot co dot uk It turns out that this was actually a documentation problem, and apparently a fix has been posted in docs. So, the 'strange' entries are intentional, and the new docs will explain them. ------------------------------------------------------------------------ [2006-09-23 18:27:20] marcus at synchromedia dot co dot uk Well, that's good to know, but it does mean that you're justifying undocumented behaviour with yet more undocumented behaviour. I see that these null bytes are there, but they're not separators; they're prefixes to both class and property name, that is, the resulting array keys are of the form: NULL<classname>NULL<propertyname> I still fail to see how this is bogus when it's so wildly different to what's documented, and is implemented in such a way as to be useful in only the most obtuse of situations, to the detriment of all other occasions. One change that would make all this much more palatable while preserving the additional information AND conforming closer to the docs: only provide extended class information for properties that are NOT in the current class. For example: <?php class A { private $A; } class B extends A { private $A; public $B; } $a = (array)new B; foreach($a as $k => $v) { echo bin2hex($k)."\n"; } ?> At present this produces: 00420041 00410041 My suggestion is to change that to: 00420041 41 That way we will be in the situation that all unambiguous properties in the current class are available using their unmodified names, just like the docs say. The only remaining issue is with protected values - I don't know that preserving that status is of much value anyway - it's not as if you can cast back from an array to an object anyway. ------------------------------------------------------------------------ [2006-09-23 17:34:44] mike@php.net There are separators, null bytes. ------------------------------------------------------------------------ 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/38935 -- Edit this bug report at http://bugs.php.net/?id=38935&edit=1

« previous php.doc (#969374098) next »