xref: /php-src/Zend/tests/closure_026.phpt (revision 08b2ab22)
1--TEST--
2Closure 026: Assigning a closure object to an array in $this
3--FILE--
4<?php
5
6class foo {
7    public $a;
8    public function __construct() {
9        $a =& $this;
10
11        $a->a[] = function() {
12            return 1;
13        };
14
15        var_dump($this);
16
17        var_dump($this->a[0]());
18    }
19}
20
21$x = new foo;
22
23print "--------------\n";
24
25foreach ($x as $b => $c) {
26    var_dump($b, $c);
27    var_dump($c[0]());
28}
29
30?>
31--EXPECTF--
32object(foo)#%d (1) {
33  ["a"]=>
34  array(1) {
35    [0]=>
36    object(Closure)#%d (4) {
37      ["name"]=>
38      string(%d) "{closure:%s:%d}"
39      ["file"]=>
40      string(%d) "%s"
41      ["line"]=>
42      int(%d)
43      ["this"]=>
44      *RECURSION*
45    }
46  }
47}
48int(1)
49--------------
50string(1) "a"
51array(1) {
52  [0]=>
53  object(Closure)#%d (4) {
54    ["name"]=>
55    string(%d) "{closure:%s:%d}"
56    ["file"]=>
57    string(%d) "%s"
58    ["line"]=>
59    int(%d)
60    ["this"]=>
61    object(foo)#%d (1) {
62      ["a"]=>
63      *RECURSION*
64    }
65  }
66}
67int(1)
68