1--TEST-- 2Testing array dereference on method calls 3--FILE-- 4<?php 5 6error_reporting(E_ALL); 7 8class foo { 9 public $x = 2; 10 public function a() { 11 $x = array(); 12 $x[] = new foo; 13 return $x; 14 } 15 public function b() { 16 return array(1.2, array(new self)); 17 } 18 public function c() { 19 $a = array(); 20 $b = &$a; 21 $b[] = true; 22 return $a; 23 } 24 public function d() { 25 return $this->b(); 26 } 27} 28 29$foo = new foo; 30 31var_dump($foo->a()[0]->x); 32var_dump($foo->a()[0]); 33var_dump($foo->b()[1][0]->a()[0]->x); 34var_dump($foo->c()[0]); 35var_dump($foo->d()[0]); 36 37?> 38--EXPECTF-- 39int(2) 40object(foo)#%d (1) { 41 ["x"]=> 42 int(2) 43} 44int(2) 45bool(true) 46float(1.2) 47