dereference_003.phpt 719 B

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