firstClassCallables.test 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. First-class callables
  2. -----
  3. <?php
  4. foo(...);
  5. $this->foo(...);
  6. A::foo(...);
  7. // These are invalid, but accepted on the parser level.
  8. new Foo(...);
  9. $this?->foo(...);
  10. #[Foo(...)]
  11. function foo() {}
  12. -----
  13. array(
  14. 0: Stmt_Expression(
  15. expr: Expr_FuncCall(
  16. name: Name(
  17. name: foo
  18. )
  19. args: array(
  20. 0: VariadicPlaceholder(
  21. )
  22. )
  23. )
  24. )
  25. 1: Stmt_Expression(
  26. expr: Expr_MethodCall(
  27. var: Expr_Variable(
  28. name: this
  29. )
  30. name: Identifier(
  31. name: foo
  32. )
  33. args: array(
  34. 0: VariadicPlaceholder(
  35. )
  36. )
  37. )
  38. )
  39. 2: Stmt_Expression(
  40. expr: Expr_StaticCall(
  41. class: Name(
  42. name: A
  43. )
  44. name: Identifier(
  45. name: foo
  46. )
  47. args: array(
  48. 0: VariadicPlaceholder(
  49. )
  50. )
  51. )
  52. )
  53. 3: Stmt_Expression(
  54. expr: Expr_New(
  55. class: Name(
  56. name: Foo
  57. )
  58. args: array(
  59. 0: VariadicPlaceholder(
  60. )
  61. )
  62. )
  63. comments: array(
  64. 0: // These are invalid, but accepted on the parser level.
  65. )
  66. )
  67. 4: Stmt_Expression(
  68. expr: Expr_NullsafeMethodCall(
  69. var: Expr_Variable(
  70. name: this
  71. )
  72. name: Identifier(
  73. name: foo
  74. )
  75. args: array(
  76. 0: VariadicPlaceholder(
  77. )
  78. )
  79. )
  80. )
  81. 5: Stmt_Function(
  82. attrGroups: array(
  83. 0: AttributeGroup(
  84. attrs: array(
  85. 0: Attribute(
  86. name: Name(
  87. name: Foo
  88. )
  89. args: array(
  90. 0: VariadicPlaceholder(
  91. )
  92. )
  93. )
  94. )
  95. )
  96. )
  97. byRef: false
  98. name: Identifier(
  99. name: foo
  100. )
  101. params: array(
  102. )
  103. returnType: null
  104. stmts: array(
  105. )
  106. )
  107. )