菜谱项目

constantDeref.test 5.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. Array/string dereferencing
  2. -----
  3. <?php
  4. "abc"[2];
  5. "abc"[2][0][0];
  6. [1, 2, 3][2];
  7. [1, 2, 3][2][0][0];
  8. array(1, 2, 3)[2];
  9. array(1, 2, 3)[2][0][0];
  10. FOO[0];
  11. Foo::BAR[1];
  12. $foo::BAR[2][1][0];
  13. -----
  14. array(
  15. 0: Expr_ArrayDimFetch(
  16. var: Scalar_String(
  17. value: abc
  18. )
  19. dim: Scalar_LNumber(
  20. value: 2
  21. )
  22. )
  23. 1: Expr_ArrayDimFetch(
  24. var: Expr_ArrayDimFetch(
  25. var: Expr_ArrayDimFetch(
  26. var: Scalar_String(
  27. value: abc
  28. )
  29. dim: Scalar_LNumber(
  30. value: 2
  31. )
  32. )
  33. dim: Scalar_LNumber(
  34. value: 0
  35. )
  36. )
  37. dim: Scalar_LNumber(
  38. value: 0
  39. )
  40. )
  41. 2: Expr_ArrayDimFetch(
  42. var: Expr_Array(
  43. items: array(
  44. 0: Expr_ArrayItem(
  45. key: null
  46. value: Scalar_LNumber(
  47. value: 1
  48. )
  49. byRef: false
  50. )
  51. 1: Expr_ArrayItem(
  52. key: null
  53. value: Scalar_LNumber(
  54. value: 2
  55. )
  56. byRef: false
  57. )
  58. 2: Expr_ArrayItem(
  59. key: null
  60. value: Scalar_LNumber(
  61. value: 3
  62. )
  63. byRef: false
  64. )
  65. )
  66. )
  67. dim: Scalar_LNumber(
  68. value: 2
  69. )
  70. )
  71. 3: Expr_ArrayDimFetch(
  72. var: Expr_ArrayDimFetch(
  73. var: Expr_ArrayDimFetch(
  74. var: Expr_Array(
  75. items: array(
  76. 0: Expr_ArrayItem(
  77. key: null
  78. value: Scalar_LNumber(
  79. value: 1
  80. )
  81. byRef: false
  82. )
  83. 1: Expr_ArrayItem(
  84. key: null
  85. value: Scalar_LNumber(
  86. value: 2
  87. )
  88. byRef: false
  89. )
  90. 2: Expr_ArrayItem(
  91. key: null
  92. value: Scalar_LNumber(
  93. value: 3
  94. )
  95. byRef: false
  96. )
  97. )
  98. )
  99. dim: Scalar_LNumber(
  100. value: 2
  101. )
  102. )
  103. dim: Scalar_LNumber(
  104. value: 0
  105. )
  106. )
  107. dim: Scalar_LNumber(
  108. value: 0
  109. )
  110. )
  111. 4: Expr_ArrayDimFetch(
  112. var: Expr_Array(
  113. items: array(
  114. 0: Expr_ArrayItem(
  115. key: null
  116. value: Scalar_LNumber(
  117. value: 1
  118. )
  119. byRef: false
  120. )
  121. 1: Expr_ArrayItem(
  122. key: null
  123. value: Scalar_LNumber(
  124. value: 2
  125. )
  126. byRef: false
  127. )
  128. 2: Expr_ArrayItem(
  129. key: null
  130. value: Scalar_LNumber(
  131. value: 3
  132. )
  133. byRef: false
  134. )
  135. )
  136. )
  137. dim: Scalar_LNumber(
  138. value: 2
  139. )
  140. )
  141. 5: Expr_ArrayDimFetch(
  142. var: Expr_ArrayDimFetch(
  143. var: Expr_ArrayDimFetch(
  144. var: Expr_Array(
  145. items: array(
  146. 0: Expr_ArrayItem(
  147. key: null
  148. value: Scalar_LNumber(
  149. value: 1
  150. )
  151. byRef: false
  152. )
  153. 1: Expr_ArrayItem(
  154. key: null
  155. value: Scalar_LNumber(
  156. value: 2
  157. )
  158. byRef: false
  159. )
  160. 2: Expr_ArrayItem(
  161. key: null
  162. value: Scalar_LNumber(
  163. value: 3
  164. )
  165. byRef: false
  166. )
  167. )
  168. )
  169. dim: Scalar_LNumber(
  170. value: 2
  171. )
  172. )
  173. dim: Scalar_LNumber(
  174. value: 0
  175. )
  176. )
  177. dim: Scalar_LNumber(
  178. value: 0
  179. )
  180. )
  181. 6: Expr_ArrayDimFetch(
  182. var: Expr_ConstFetch(
  183. name: Name(
  184. parts: array(
  185. 0: FOO
  186. )
  187. )
  188. )
  189. dim: Scalar_LNumber(
  190. value: 0
  191. )
  192. )
  193. 7: Expr_ArrayDimFetch(
  194. var: Expr_ClassConstFetch(
  195. class: Name(
  196. parts: array(
  197. 0: Foo
  198. )
  199. )
  200. name: BAR
  201. )
  202. dim: Scalar_LNumber(
  203. value: 1
  204. )
  205. )
  206. 8: Expr_ArrayDimFetch(
  207. var: Expr_ArrayDimFetch(
  208. var: Expr_ArrayDimFetch(
  209. var: Expr_ClassConstFetch(
  210. class: Expr_Variable(
  211. name: foo
  212. )
  213. name: BAR
  214. )
  215. dim: Scalar_LNumber(
  216. value: 2
  217. )
  218. )
  219. dim: Scalar_LNumber(
  220. value: 1
  221. )
  222. )
  223. dim: Scalar_LNumber(
  224. value: 0
  225. )
  226. )
  227. )