bug42819.phpt 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304
  1. --TEST--
  2. Bug #42819 (namespaces in indexes of constant arrays)
  3. --FILE--
  4. <?php
  5. namespace foo\foo;
  6. const C = "foo\\foo\\C\n";
  7. const I = 12;
  8. class foo {
  9. const I = 32;
  10. const C = "foo\\foo\\foo::C\n";
  11. }
  12. namespace foo;
  13. use \ArrayObject;
  14. const C = "foo\\C\n";
  15. const I = 11;
  16. class foo {
  17. const C = "foo\\foo::C\n";
  18. const I = 22;
  19. const C1 = C;
  20. const C2 = foo\C;
  21. const C3 = foo\foo::C;
  22. const C4 = \foo\C;
  23. const C5 = \foo\foo::C;
  24. const C6 = ArrayObject::STD_PROP_LIST;
  25. const C7 = E_ERROR;
  26. }
  27. class bar1 {
  28. static $a1 = array(I => 0);
  29. static $a2 = array(foo\I => 0);
  30. static $a3 = array(foo\foo::I => 0);
  31. static $a4 = array(\foo\I => 0);
  32. static $a5 = array(\foo\foo::I => 0);
  33. static $a6 = array(ArrayObject::STD_PROP_LIST => 0);
  34. static $a7 = array(E_ERROR => 0);
  35. }
  36. class bar2 {
  37. static $a1 = array(I => I);
  38. static $a2 = array(foo\I => I);
  39. static $a3 = array(foo\foo::I => I);
  40. static $a4 = array(\foo\I => I);
  41. static $a5 = array(\foo\foo::I => I);
  42. static $a6 = array(ArrayObject::STD_PROP_LIST => I);
  43. static $a7 = array(E_ERROR => I);
  44. }
  45. class bar3 {
  46. static $a1 = array(I => foo\I);
  47. static $a2 = array(foo\I => foo\I);
  48. static $a3 = array(foo\foo::I => foo\I);
  49. static $a4 = array(\foo\I => foo\I);
  50. static $a5 = array(\foo\foo::I => foo\I);
  51. static $a6 = array(ArrayObject::STD_PROP_LIST => foo\I);
  52. static $a7 = array(E_ERROR => foo\I);
  53. }
  54. class bar4 {
  55. static $a1 = array(I => ArrayObject::STD_PROP_LIST);
  56. static $a2 = array(foo\I => ArrayObject::STD_PROP_LIST);
  57. static $a3 = array(foo\foo::I => ArrayObject::STD_PROP_LIST);
  58. static $a4 = array(\foo\I => ArrayObject::STD_PROP_LIST);
  59. static $a5 = array(\foo\foo::I => ArrayObject::STD_PROP_LIST);
  60. static $a6 = array(ArrayObject::STD_PROP_LIST => ArrayObject::STD_PROP_LIST);
  61. static $a7 = array(E_ERROR => ArrayObject::STD_PROP_LIST);
  62. }
  63. class bar5 {
  64. static $a1 = array(I => E_ERROR);
  65. static $a2 = array(foo\I => E_ERROR);
  66. static $a3 = array(foo\foo::I => E_ERROR);
  67. static $a4 = array(\foo\I => E_ERROR);
  68. static $a5 = array(\foo\foo::I => E_ERROR);
  69. static $a6 = array(ArrayObject::STD_PROP_LIST => E_ERROR);
  70. static $a7 = array(E_ERROR => E_ERROR);
  71. }
  72. echo "first\n";
  73. echo C;
  74. echo foo\C;
  75. echo foo\foo::C;
  76. echo foo::C;
  77. echo \foo\foo::C;
  78. echo ArrayObject::STD_PROP_LIST . "\n";
  79. echo E_ERROR . "\n";
  80. echo "second\n";
  81. echo \foo\foo::C1;
  82. echo \foo\foo::C2;
  83. echo \foo\foo::C3;
  84. echo \foo\foo::C4;
  85. echo \foo\foo::C5;
  86. echo \foo\foo::C6 . "\n";
  87. echo \foo\foo::C7 . "\n";
  88. print_r(bar1::$a1);
  89. print_r(bar1::$a2);
  90. print_r(bar1::$a3);
  91. print_r(bar1::$a4);
  92. print_r(bar1::$a5);
  93. print_r(bar1::$a6);
  94. print_r(bar1::$a7);
  95. print_r(bar2::$a1);
  96. print_r(bar2::$a2);
  97. print_r(bar2::$a3);
  98. print_r(bar2::$a4);
  99. print_r(bar2::$a5);
  100. print_r(bar2::$a6);
  101. print_r(bar2::$a7);
  102. print_r(bar3::$a1);
  103. print_r(bar3::$a2);
  104. print_r(bar3::$a3);
  105. print_r(bar3::$a4);
  106. print_r(bar3::$a5);
  107. print_r(bar3::$a6);
  108. print_r(bar3::$a7);
  109. print_r(bar4::$a1);
  110. print_r(bar4::$a2);
  111. print_r(bar4::$a3);
  112. print_r(bar4::$a4);
  113. print_r(bar4::$a5);
  114. print_r(bar4::$a6);
  115. print_r(bar4::$a7);
  116. print_r(bar5::$a1);
  117. print_r(bar5::$a2);
  118. print_r(bar5::$a3);
  119. print_r(bar5::$a4);
  120. print_r(bar5::$a5);
  121. print_r(bar5::$a6);
  122. print_r(bar5::$a7);
  123. function oops($a = array(foo\unknown)){}
  124. oops();
  125. ?>
  126. --EXPECTF--
  127. first
  128. foo\C
  129. foo\foo\C
  130. foo\foo\foo::C
  131. foo\foo::C
  132. foo\foo::C
  133. 1
  134. 1
  135. second
  136. foo\C
  137. foo\foo\C
  138. foo\foo\foo::C
  139. foo\C
  140. foo\foo::C
  141. 1
  142. 1
  143. Array
  144. (
  145. [11] => 0
  146. )
  147. Array
  148. (
  149. [12] => 0
  150. )
  151. Array
  152. (
  153. [32] => 0
  154. )
  155. Array
  156. (
  157. [11] => 0
  158. )
  159. Array
  160. (
  161. [22] => 0
  162. )
  163. Array
  164. (
  165. [1] => 0
  166. )
  167. Array
  168. (
  169. [1] => 0
  170. )
  171. Array
  172. (
  173. [11] => 11
  174. )
  175. Array
  176. (
  177. [12] => 11
  178. )
  179. Array
  180. (
  181. [32] => 11
  182. )
  183. Array
  184. (
  185. [11] => 11
  186. )
  187. Array
  188. (
  189. [22] => 11
  190. )
  191. Array
  192. (
  193. [1] => 11
  194. )
  195. Array
  196. (
  197. [1] => 11
  198. )
  199. Array
  200. (
  201. [11] => 12
  202. )
  203. Array
  204. (
  205. [12] => 12
  206. )
  207. Array
  208. (
  209. [32] => 12
  210. )
  211. Array
  212. (
  213. [11] => 12
  214. )
  215. Array
  216. (
  217. [22] => 12
  218. )
  219. Array
  220. (
  221. [1] => 12
  222. )
  223. Array
  224. (
  225. [1] => 12
  226. )
  227. Array
  228. (
  229. [11] => 1
  230. )
  231. Array
  232. (
  233. [12] => 1
  234. )
  235. Array
  236. (
  237. [32] => 1
  238. )
  239. Array
  240. (
  241. [11] => 1
  242. )
  243. Array
  244. (
  245. [22] => 1
  246. )
  247. Array
  248. (
  249. [1] => 1
  250. )
  251. Array
  252. (
  253. [1] => 1
  254. )
  255. Array
  256. (
  257. [11] => 1
  258. )
  259. Array
  260. (
  261. [12] => 1
  262. )
  263. Array
  264. (
  265. [32] => 1
  266. )
  267. Array
  268. (
  269. [11] => 1
  270. )
  271. Array
  272. (
  273. [22] => 1
  274. )
  275. Array
  276. (
  277. [1] => 1
  278. )
  279. Array
  280. (
  281. [1] => 1
  282. )
  283. Fatal error: Uncaught Error: Undefined constant "foo\foo\unknown" in %s:%d
  284. Stack trace:
  285. #0 %s(%d): foo\oops()
  286. #1 {main}
  287. thrown in %sbug42819.php on line %d