trait.test 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. Traits
  2. -----
  3. <?php
  4. trait A {
  5. public function a() {}
  6. }
  7. class B {
  8. use C;
  9. use D {
  10. a as protected b;
  11. c as d;
  12. e as private;
  13. }
  14. use E, F, G {
  15. E::a insteadof F, G;
  16. E::b as protected c;
  17. E::d as e;
  18. E::f as private;
  19. }
  20. }
  21. -----
  22. array(
  23. 0: Stmt_Trait(
  24. name: Identifier(
  25. name: A
  26. )
  27. stmts: array(
  28. 0: Stmt_ClassMethod(
  29. flags: MODIFIER_PUBLIC (1)
  30. byRef: false
  31. name: Identifier(
  32. name: a
  33. )
  34. params: array(
  35. )
  36. returnType: null
  37. stmts: array(
  38. )
  39. )
  40. )
  41. )
  42. 1: Stmt_Class(
  43. flags: 0
  44. name: Identifier(
  45. name: B
  46. )
  47. extends: null
  48. implements: array(
  49. )
  50. stmts: array(
  51. 0: Stmt_TraitUse(
  52. traits: array(
  53. 0: Name(
  54. parts: array(
  55. 0: C
  56. )
  57. )
  58. )
  59. adaptations: array(
  60. )
  61. )
  62. 1: Stmt_TraitUse(
  63. traits: array(
  64. 0: Name(
  65. parts: array(
  66. 0: D
  67. )
  68. )
  69. )
  70. adaptations: array(
  71. 0: Stmt_TraitUseAdaptation_Alias(
  72. trait: null
  73. method: Identifier(
  74. name: a
  75. )
  76. newModifier: MODIFIER_PROTECTED (2)
  77. newName: Identifier(
  78. name: b
  79. )
  80. )
  81. 1: Stmt_TraitUseAdaptation_Alias(
  82. trait: null
  83. method: Identifier(
  84. name: c
  85. )
  86. newModifier: null
  87. newName: Identifier(
  88. name: d
  89. )
  90. )
  91. 2: Stmt_TraitUseAdaptation_Alias(
  92. trait: null
  93. method: Identifier(
  94. name: e
  95. )
  96. newModifier: MODIFIER_PRIVATE (4)
  97. newName: null
  98. )
  99. )
  100. )
  101. 2: Stmt_TraitUse(
  102. traits: array(
  103. 0: Name(
  104. parts: array(
  105. 0: E
  106. )
  107. )
  108. 1: Name(
  109. parts: array(
  110. 0: F
  111. )
  112. )
  113. 2: Name(
  114. parts: array(
  115. 0: G
  116. )
  117. )
  118. )
  119. adaptations: array(
  120. 0: Stmt_TraitUseAdaptation_Precedence(
  121. trait: Name(
  122. parts: array(
  123. 0: E
  124. )
  125. )
  126. method: Identifier(
  127. name: a
  128. )
  129. insteadof: array(
  130. 0: Name(
  131. parts: array(
  132. 0: F
  133. )
  134. )
  135. 1: Name(
  136. parts: array(
  137. 0: G
  138. )
  139. )
  140. )
  141. )
  142. 1: Stmt_TraitUseAdaptation_Alias(
  143. trait: Name(
  144. parts: array(
  145. 0: E
  146. )
  147. )
  148. method: Identifier(
  149. name: b
  150. )
  151. newModifier: MODIFIER_PROTECTED (2)
  152. newName: Identifier(
  153. name: c
  154. )
  155. )
  156. 2: Stmt_TraitUseAdaptation_Alias(
  157. trait: Name(
  158. parts: array(
  159. 0: E
  160. )
  161. )
  162. method: Identifier(
  163. name: d
  164. )
  165. newModifier: null
  166. newName: Identifier(
  167. name: e
  168. )
  169. )
  170. 3: Stmt_TraitUseAdaptation_Alias(
  171. trait: Name(
  172. parts: array(
  173. 0: E
  174. )
  175. )
  176. method: Identifier(
  177. name: f
  178. )
  179. newModifier: MODIFIER_PRIVATE (4)
  180. newName: null
  181. )
  182. )
  183. )
  184. )
  185. )
  186. )