ReflectionGenerator_basic.phpt 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. --TEST--
  2. ReflectionGenerator basic test
  3. --FILE--
  4. <?php
  5. function foo() {
  6. yield;
  7. }
  8. $gens = [
  9. (new class() {
  10. function a() {
  11. yield from foo();
  12. }
  13. })->a(),
  14. (function() {
  15. yield;
  16. })(),
  17. foo(),
  18. ];
  19. foreach ($gens as $gen) {
  20. var_dump($gen);
  21. $gen->valid(); // start Generator
  22. $ref = new ReflectionGenerator($gen);
  23. var_dump($ref->getTrace());
  24. var_dump($ref->getExecutingLine());
  25. var_dump($ref->getExecutingFile());
  26. var_dump($ref->getExecutingGenerator());
  27. var_dump($ref->getFunction());
  28. var_dump($ref->getThis());
  29. }
  30. ?>
  31. --EXPECTF--
  32. object(Generator)#2 (0) {
  33. }
  34. array(2) {
  35. [0]=>
  36. array(4) {
  37. ["file"]=>
  38. string(%d) "%s"
  39. ["line"]=>
  40. int(%d)
  41. ["function"]=>
  42. string(3) "foo"
  43. ["args"]=>
  44. array(0) {
  45. }
  46. }
  47. [1]=>
  48. array(5) {
  49. ["function"]=>
  50. string(1) "a"
  51. ["class"]=>
  52. string(%d) "class@anonymous%s"
  53. ["object"]=>
  54. object(class@anonymous)#%d (0) {
  55. }
  56. ["type"]=>
  57. string(2) "->"
  58. ["args"]=>
  59. array(0) {
  60. }
  61. }
  62. }
  63. int(%d)
  64. string(%d) "%sReflectionGenerator_basic.%s"
  65. object(Generator)#6 (0) {
  66. }
  67. object(ReflectionMethod)#8 (2) {
  68. ["name"]=>
  69. string(1) "a"
  70. ["class"]=>
  71. string(%d) "class@anonymous%s"
  72. }
  73. object(class@anonymous)#1 (0) {
  74. }
  75. object(Generator)#4 (0) {
  76. }
  77. array(1) {
  78. [0]=>
  79. array(2) {
  80. ["function"]=>
  81. string(9) "{closure}"
  82. ["args"]=>
  83. array(0) {
  84. }
  85. }
  86. }
  87. int(%d)
  88. string(%d) "%sReflectionGenerator_basic.%s"
  89. object(Generator)#4 (0) {
  90. }
  91. object(ReflectionFunction)#7 (1) {
  92. ["name"]=>
  93. string(9) "{closure}"
  94. }
  95. NULL
  96. object(Generator)#5 (0) {
  97. }
  98. array(1) {
  99. [0]=>
  100. array(2) {
  101. ["function"]=>
  102. string(3) "foo"
  103. ["args"]=>
  104. array(0) {
  105. }
  106. }
  107. }
  108. int(%d)
  109. string(%d) "%sReflectionGenerator_basic.%s"
  110. object(Generator)#5 (0) {
  111. }
  112. object(ReflectionFunction)#8 (1) {
  113. ["name"]=>
  114. string(3) "foo"
  115. }
  116. NULL