bug42819.phpt 4.2 KB

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