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>

Reply via email to