rfc:instance-method-call

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
Last revisionBoth sides next revision
rfc:instance-method-call [2010/11/27 18:49] – update feliperfc:instance-method-call [2014/04/08 22:47] salathe
Line 3: Line 3:
   * Date: 2010-11-26   * Date: 2010-11-26
   * Author: Felipe Pena <felipe@php.net>   * Author: Felipe Pena <felipe@php.net>
-  * Status: Under Discussion+  * Status: Implemented (Syntax 2)
  
 ===== Introduction ===== ===== Introduction =====
Line 21: Line 21:
   * %%(new $foo())->bar%%   * %%(new $foo())->bar%%
   * %%(new $bar->y)->x%%   * %%(new $bar->y)->x%%
 +  * %%(new foo)[0]%%
  
 ===== Examples ===== ===== Examples =====
  
 === Using brackets === === Using brackets ===
 +
 +<code php>
 +<?php
 +
 +class foo extends ArrayObject {
 + public function __construct($arr) {
 + parent::__construct($arr);
 + }
 +}
 +
 +var_dump( (new foo( array(1, array(4, 5), 3) ))[1][0] ); // int(4)
 +
 +?>
 +</code>
 +
 <code php> <code php>
 <?php <?php
Line 43: Line 59:
 var_dump((new $x)->y);      // foo var_dump((new $x)->y);      // foo
 var_dump((new $bar->y)->x); // 1 var_dump((new $bar->y)->x); // 1
 +
 +?>
 +</code>
 +
 +<code php>
 +<?php
 +
 +class bar {
 + public $z;
 +
 + public function __construct() {
 + $this->z = new stdclass;
 + }
 + public function getZ() {
 + return $this->z;
 + }
 +}
 +
 +var_dump(clone (new bar)->z);
 +var_dump(clone (new bar)->getZ());
  
 ?> ?>
Line 117: Line 153:
   * http://felipe.ath.cx/diff/instance-method-call.patch (without brackets)   * http://felipe.ath.cx/diff/instance-method-call.patch (without brackets)
   * http://felipe.ath.cx/diff/instance-method-call-2.patch (with brackets)   * http://felipe.ath.cx/diff/instance-method-call-2.patch (with brackets)
 +  * http://felipe.ath.cx/diff/instance-method-call-3.patch (with brackets + array dereferencing)
  
 ===== Changelog ===== ===== Changelog =====
  
 +  * 08/04/2014 - Closed as "implemented"
 +  * 06/11/2011 - Implemented (Syntax 2) in [[http://git.php.net/?p=php-src.git;a=commit;h=ff48763f4b0fee906293815b42fe3e2a167702c8|ff48763f4b]] (PHP 5.4.0)
   * 26/11/2010 - Posted RFC on internals   * 26/11/2010 - Posted RFC on internals
   * 27/11/2010 - New syntax proposed   * 27/11/2010 - New syntax proposed
 +  * 29/11/2010 - Added array dereferencing support (e.g. %%(new foo)[0]%%)
rfc/instance-method-call.txt · Last modified: 2017/09/22 13:28 by 127.0.0.1