rfc:to-array

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
rfc:to-array [2019/12/10 14:24] stevenwadejrrfc:to-array [2020/02/11 12:52] – Remove reference to print_r() casting to array stevenwadejr
Line 3: Line 3:
   * Date: 2019-08-28   * Date: 2019-08-28
   * Author: Steven Wade, stevenwadejr@gmail.com   * Author: Steven Wade, stevenwadejr@gmail.com
-  * Status: Draft+  * Status: Under Discussion
   * First Published at: http://wiki.php.net/rfc/to-array   * First Published at: http://wiki.php.net/rfc/to-array
  
Line 44: Line 44:
  
 <code php> <code php>
-print_r($person); // calls __toArray() 
- 
-// Output 
-/* 
-Array 
-( 
-    [name] => John Doe 
-    [email] => j.doe@example.com 
-) 
-*/ 
- 
 $personArray = (array) $person; // casting triggers __toArray() $personArray = (array) $person; // casting triggers __toArray()
 </code> </code>
Line 106: Line 95:
  
 <code php> <code php>
-print_r(array_keys($person));+print_r( 
 +    array_keys($person) 
 +);
  
 // Output // Output
Line 138: Line 129:
 ==== To Opcache ==== ==== To Opcache ====
 :?: Help needed :?: Help needed
 +
 +===== Concerns =====
 +
 +A [[https://externals.io/message/105589#105594|concern raised in the initial RFC proposal discussion]] referred to the existing behavior of casting and exposing object state:
 +
 +>As it currently stands, the array cast is the only operation capable of exposing object state without triggering any kind of access guards: it is very much required for anything that works with reflection and typed properties, and possibly the only operation in PHP that operates on state without some contraption intercepting its execution.
 +
 +As a response to this concern, the new <nowiki>get_mangled_object_vars()</nowiki> function was added in [[https://github.com/php/php-src/commit/eecd8961d94c50cc6cdc94ec80df8c1ce4881a76|PHP 7.4]].
  
 ===== Proposed Voting Choices ===== ===== Proposed Voting Choices =====
rfc/to-array.txt · Last modified: 2020/02/11 13:57 by stevenwadejr