joey Tue Sep 26 00:37:57 2006 UTC
Modified files:
/phpdoc/en/language types.xml
Log:
Fix #38935, document changes in PHP5 when casting objects to arrays.
http://cvs.php.net/viewvc.cgi/phpdoc/en/language/types.xml?r1=1.167&r2=1.168&diff_format=u
Index: phpdoc/en/language/types.xml
diff -u phpdoc/en/language/types.xml:1.167 phpdoc/en/language/types.xml:1.168
--- phpdoc/en/language/types.xml:1.167 Thu Aug 31 01:57:26 2006
+++ phpdoc/en/language/types.xml Tue Sep 26 00:37:57 2006
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.167 $ -->
+<!-- $Revision: 1.168 $ -->
<chapter id="language.types">
<title>Types</title>
@@ -1820,7 +1820,33 @@
<para>
If you convert an <type>object</type> to an array, you get the
properties (member variables) of that object as the array's elements.
- The keys are the member variable names.
+ The keys are the member variable names with a few notable exceptions:
+ private variables have the class name prepended to the variable name;
+ protected variables have a '*' prepended to the variable name.
+ These prepended values have null bytes on either side. This can result
+ in some unexpected behaviour.
+ <informalexample>
+ <programlisting role="php">
+<![CDATA[
+<?php
+
+class A {
+ private $A; // This will become '\0A\0A'
+}
+
+class B extends A {
+ private $A; // This will become '\0B\0A'
+ public $AA; // This will become 'AA'
+}
+
+var_dump((array) new B());
+?>
+]]>
+ </programlisting>
+ </informalexample>
+
+ The above will appear to have two keys named 'AA', although one
+ of them is actually named '\0A\0A'.
</para>
<para>