File tree Expand file tree Collapse file tree 3 files changed +106
-0
lines changed
Zend/tests/context_managers Expand file tree Collapse file tree 3 files changed +106
-0
lines changed Original file line number Diff line number Diff line change 1+ --TEST--
2+ using() restores CV
3+ --FILE--
4+ <?php
5+
6+ require 'basic_manager.inc ' ;
7+
8+ class A {}
9+
10+ $ value = new A ;
11+ $ value2 = $ value ;
12+
13+ echo "# \$value before using(): \n" ;
14+ var_dump ($ value );
15+
16+ using (new Manager () as $ value ) {
17+ echo "# \$value in using(): \n" ;
18+ var_dump ($ value );
19+ }
20+
21+ echo "# \$value after using(): \n" ;
22+ var_dump ($ value );
23+ var_dump ($ value === $ value2 );
24+
25+ ?>
26+ --EXPECTF--
27+ # $value before using():
28+ object(A)#%d (0) {
29+ }
30+ Manager::enterContext()
31+ # $value in using():
32+ object(stdClass)#%d (0) {
33+ }
34+ Manager::exitContext(null)
35+ # $value after using():
36+ object(A)#%d (0) {
37+ }
38+ bool(true)
Original file line number Diff line number Diff line change 1+ --TEST--
2+ using() restores CV iff it was set
3+ --FILE--
4+ <?php
5+
6+ require 'basic_manager.inc ' ;
7+
8+ using (new Manager () as $ value ) {
9+ var_dump ($ value );
10+ }
11+
12+ echo "\$value is set after using(): \n" ;
13+ var_dump (isset ($ value ));
14+ var_dump (array_key_exists ('value ' , get_defined_vars ()));
15+
16+ ?>
17+ --EXPECTF--
18+ Manager::enterContext()
19+ object(stdClass)#%d (0) {
20+ }
21+ Manager::exitContext(null)
22+ $value is set after using():
23+ bool(false)
24+ bool(false)
Original file line number Diff line number Diff line change 1+ --TEST--
2+ using() restores CV and preserves references
3+ --FILE--
4+ <?php
5+
6+ require 'basic_manager.inc ' ;
7+
8+ class A {}
9+ class B {}
10+
11+ $ value = new A ;
12+ $ value2 = &$ value ;
13+
14+ echo "# \$value before using(): \n" ;
15+ var_dump ($ value );
16+
17+ using (new Manager () as $ value ) {
18+ echo "# \$value in using(): \n" ;
19+ var_dump ($ value );
20+ $ value = null ;
21+ }
22+
23+ echo "# \$value after using(): \n" ;
24+ var_dump ($ value );
25+ $ value = new B ;
26+
27+ echo "# \$value2 references \$value: \n" ;
28+ var_dump ($ value2 === $ value );
29+
30+ ?>
31+ --EXPECTF--
32+ # $value before using():
33+ object(A)#%d (0) {
34+ }
35+ Manager::enterContext()
36+ # $value in using():
37+ object(stdClass)#%d (0) {
38+ }
39+ Manager::exitContext(null)
40+ # $value after using():
41+ object(A)#%d (0) {
42+ }
43+ # $value2 references $value:
44+ bool(true)
You can’t perform that action at this time.
0 commit comments