File:
[ELWIX - Embedded LightWeight unIX -] /
embedaddon /
php /
tests /
classes /
implicit_instantiation_001.phpt
Revision
1.1.1.2 (vendor branch):
download - view:
text,
annotated -
select for diffs -
revision graph
Tue May 29 12:34:34 2012 UTC (12 years, 3 months ago) by
misho
Branches:
php,
MAIN
CVS tags:
v5_4_3elwix,
v5_4_29p0,
v5_4_29,
v5_4_20p0,
v5_4_20,
v5_4_17p0,
v5_4_17,
HEAD
php 5.4.3+patches
1: --TEST--
2: Implicit object instantiation when accessing properties of non-object.
3: --FILE--
4: <?php
5: class C {
6: // These values get implicitly converted to objects
7: public $boolFalse = false;
8: public $emptyString = '';
9: public $null = null;
10:
11: // These values do not get implicitly converted to objects
12: public $boolTrue = true;
13: public $nonEmptyString = 'hello';
14: public $intZero = 0;
15: }
16:
17: $c = new C;
18: foreach($c as $name => $value) {
19: echo "\n\n---( \$c->$name )---";
20: echo "\n --> Attempting implicit conversion to object using increment...\n";
21: $c->$name->prop++;
22: $c->$name = $value; // reset value in case implicit conversion was successful
23:
24: echo "\n --> Attempting implicit conversion to object using assignment...\n";
25: $c->$name->prop = "Implicit instantiation!";
26: $c->$name = $value; // reset value in case implicit conversion was successful
27:
28: echo "\n --> Attempting implicit conversion to object using combined assignment...\n";
29: $c->$name->prop .= " Implicit instantiation!";
30: }
31:
32: echo "\n\n\n --> Resulting object:";
33: var_dump($c);
34:
35: ?>
36: --EXPECTF--
37:
38:
39: ---( $c->boolFalse )---
40: --> Attempting implicit conversion to object using increment...
41:
42: Warning: Creating default object from empty value in %s on line 18
43:
44: --> Attempting implicit conversion to object using assignment...
45:
46: Warning: Creating default object from empty value in %s on line 22
47:
48: --> Attempting implicit conversion to object using combined assignment...
49:
50: Warning: Creating default object from empty value in %s on line 26
51:
52:
53: ---( $c->emptyString )---
54: --> Attempting implicit conversion to object using increment...
55:
56: Warning: Creating default object from empty value in %s on line 18
57:
58: --> Attempting implicit conversion to object using assignment...
59:
60: Warning: Creating default object from empty value in %s on line 22
61:
62: --> Attempting implicit conversion to object using combined assignment...
63:
64: Warning: Creating default object from empty value in %s on line 26
65:
66:
67: ---( $c->null )---
68: --> Attempting implicit conversion to object using increment...
69:
70: Warning: Creating default object from empty value in %s on line 18
71:
72: --> Attempting implicit conversion to object using assignment...
73:
74: Warning: Creating default object from empty value in %s on line 22
75:
76: --> Attempting implicit conversion to object using combined assignment...
77:
78: Warning: Creating default object from empty value in %s on line 26
79:
80:
81: ---( $c->boolTrue )---
82: --> Attempting implicit conversion to object using increment...
83:
84: Warning: Attempt to %s property of non-object in %s on line 18
85:
86: --> Attempting implicit conversion to object using assignment...
87:
88: Warning: Attempt to assign property of non-object in %s on line 22
89:
90: --> Attempting implicit conversion to object using combined assignment...
91:
92: Warning: Attempt to assign property of non-object in %s on line 26
93:
94:
95: ---( $c->nonEmptyString )---
96: --> Attempting implicit conversion to object using increment...
97:
98: Warning: Attempt to %s property of non-object in %s on line 18
99:
100: --> Attempting implicit conversion to object using assignment...
101:
102: Warning: Attempt to assign property of non-object in %s on line 22
103:
104: --> Attempting implicit conversion to object using combined assignment...
105:
106: Warning: Attempt to assign property of non-object in %s on line 26
107:
108:
109: ---( $c->intZero )---
110: --> Attempting implicit conversion to object using increment...
111:
112: Warning: Attempt to %s property of non-object in %s on line 18
113:
114: --> Attempting implicit conversion to object using assignment...
115:
116: Warning: Attempt to assign property of non-object in %s on line 22
117:
118: --> Attempting implicit conversion to object using combined assignment...
119:
120: Warning: Attempt to assign property of non-object in %s on line 26
121:
122:
123:
124: --> Resulting object:object(C)#%d (6) {
125: [%u|b%"boolFalse"]=>
126: object(stdClass)#%d (1) {
127: [%u|b%"prop"]=>
128: %unicode|string%(24) " Implicit instantiation!"
129: }
130: [%u|b%"emptyString"]=>
131: object(stdClass)#%d (1) {
132: [%u|b%"prop"]=>
133: %unicode|string%(24) " Implicit instantiation!"
134: }
135: [%u|b%"null"]=>
136: object(stdClass)#%d (1) {
137: [%u|b%"prop"]=>
138: %unicode|string%(24) " Implicit instantiation!"
139: }
140: [%u|b%"boolTrue"]=>
141: bool(true)
142: [%u|b%"nonEmptyString"]=>
143: %unicode|string%(5) "hello"
144: [%u|b%"intZero"]=>
145: int(0)
146: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>