match.test 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. Match
  2. -----
  3. <?php
  4. echo match (1) {
  5. 0 => 'Foo',
  6. 1 => 'Bar',
  7. };
  8. -----
  9. !!php7
  10. array(
  11. 0: Stmt_Echo(
  12. exprs: array(
  13. 0: Expr_Match(
  14. cond: Scalar_LNumber(
  15. value: 1
  16. )
  17. arms: array(
  18. 0: MatchArm(
  19. conds: array(
  20. 0: Scalar_LNumber(
  21. value: 0
  22. )
  23. )
  24. body: Scalar_String(
  25. value: Foo
  26. )
  27. )
  28. 1: MatchArm(
  29. conds: array(
  30. 0: Scalar_LNumber(
  31. value: 1
  32. )
  33. )
  34. body: Scalar_String(
  35. value: Bar
  36. )
  37. )
  38. )
  39. )
  40. )
  41. )
  42. )
  43. -----
  44. <?php
  45. $value = match (1) {
  46. // list of conditions
  47. 0, 1 => 'Foo',
  48. };
  49. -----
  50. !!php7
  51. array(
  52. 0: Stmt_Expression(
  53. expr: Expr_Assign(
  54. var: Expr_Variable(
  55. name: value
  56. )
  57. expr: Expr_Match(
  58. cond: Scalar_LNumber(
  59. value: 1
  60. )
  61. arms: array(
  62. 0: MatchArm(
  63. conds: array(
  64. 0: Scalar_LNumber(
  65. value: 0
  66. comments: array(
  67. 0: // list of conditions
  68. )
  69. )
  70. 1: Scalar_LNumber(
  71. value: 1
  72. )
  73. )
  74. body: Scalar_String(
  75. value: Foo
  76. )
  77. comments: array(
  78. 0: // list of conditions
  79. )
  80. )
  81. )
  82. )
  83. )
  84. )
  85. )
  86. -----
  87. <?php
  88. $result = match ($operator) {
  89. BinaryOperator::ADD => $lhs + $rhs,
  90. };
  91. -----
  92. !!php7
  93. array(
  94. 0: Stmt_Expression(
  95. expr: Expr_Assign(
  96. var: Expr_Variable(
  97. name: result
  98. )
  99. expr: Expr_Match(
  100. cond: Expr_Variable(
  101. name: operator
  102. )
  103. arms: array(
  104. 0: MatchArm(
  105. conds: array(
  106. 0: Expr_ClassConstFetch(
  107. class: Name(
  108. parts: array(
  109. 0: BinaryOperator
  110. )
  111. )
  112. name: Identifier(
  113. name: ADD
  114. )
  115. )
  116. )
  117. body: Expr_BinaryOp_Plus(
  118. left: Expr_Variable(
  119. name: lhs
  120. )
  121. right: Expr_Variable(
  122. name: rhs
  123. )
  124. )
  125. )
  126. )
  127. )
  128. )
  129. )
  130. )
  131. -----
  132. <?php
  133. $value = match ($char) {
  134. 1 => '1',
  135. default => 'default'
  136. };
  137. -----
  138. !!php7
  139. array(
  140. 0: Stmt_Expression(
  141. expr: Expr_Assign(
  142. var: Expr_Variable(
  143. name: value
  144. )
  145. expr: Expr_Match(
  146. cond: Expr_Variable(
  147. name: char
  148. )
  149. arms: array(
  150. 0: MatchArm(
  151. conds: array(
  152. 0: Scalar_LNumber(
  153. value: 1
  154. )
  155. )
  156. body: Scalar_String(
  157. value: 1
  158. )
  159. )
  160. 1: MatchArm(
  161. conds: null
  162. body: Scalar_String(
  163. value: default
  164. )
  165. )
  166. )
  167. )
  168. )
  169. )
  170. )
  171. -----
  172. <?php
  173. $value = match (1) {
  174. 0, 1, => 'Foo',
  175. default, => 'Bar',
  176. };
  177. -----
  178. !!php7
  179. array(
  180. 0: Stmt_Expression(
  181. expr: Expr_Assign(
  182. var: Expr_Variable(
  183. name: value
  184. )
  185. expr: Expr_Match(
  186. cond: Scalar_LNumber(
  187. value: 1
  188. )
  189. arms: array(
  190. 0: MatchArm(
  191. conds: array(
  192. 0: Scalar_LNumber(
  193. value: 0
  194. )
  195. 1: Scalar_LNumber(
  196. value: 1
  197. )
  198. )
  199. body: Scalar_String(
  200. value: Foo
  201. )
  202. )
  203. 1: MatchArm(
  204. conds: null
  205. body: Scalar_String(
  206. value: Bar
  207. )
  208. )
  209. )
  210. )
  211. )
  212. )
  213. )