bug52057.phpt 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. --TEST--
  2. Bug #52057 (ReflectionClass fails on Closure class)
  3. --FILE--
  4. <?php
  5. $closure = function($a) { echo $a; };
  6. $reflection = new ReflectionClass('closure');
  7. var_dump($reflection->hasMethod('__invoke')); // true
  8. $reflection = new ReflectionClass($closure);
  9. var_dump($reflection->hasMethod('__invoke')); // true
  10. $reflection = new ReflectionObject($closure);
  11. var_dump($reflection->hasMethod('__invoke')); // true
  12. $reflection = new ReflectionClass('closure');
  13. var_dump($h = $reflection->getMethod('__invoke')); // true
  14. var_dump($h->class.'::'.$h->getName());
  15. $reflection = new ReflectionClass($closure);
  16. var_dump($h = $reflection->getMethod('__invoke')); // true
  17. var_dump($h->class.'::'.$h->getName());
  18. $reflection = new ReflectionObject($closure);
  19. var_dump($h = $reflection->getMethod('__invoke')); // true
  20. var_dump($h->class.'::'.$h->getName());
  21. ?>
  22. --EXPECTF--
  23. bool(true)
  24. bool(true)
  25. bool(true)
  26. object(ReflectionMethod)#%d (2) {
  27. ["name"]=>
  28. string(8) "__invoke"
  29. ["class"]=>
  30. string(7) "Closure"
  31. }
  32. string(17) "Closure::__invoke"
  33. object(ReflectionMethod)#%d (2) {
  34. ["name"]=>
  35. string(8) "__invoke"
  36. ["class"]=>
  37. string(7) "Closure"
  38. }
  39. string(17) "Closure::__invoke"
  40. object(ReflectionMethod)#%d (2) {
  41. ["name"]=>
  42. string(8) "__invoke"
  43. ["class"]=>
  44. string(7) "Closure"
  45. }
  46. string(17) "Closure::__invoke"