first_class_callable_dynamic.phpt 678 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. --TEST--
  2. Acquire callable through various dynamic constructs
  3. --FILE--
  4. <?php
  5. class A {
  6. public static function b($x) {
  7. return $x;
  8. }
  9. public function c($x) {
  10. return $x;
  11. }
  12. }
  13. $name = 'strlen';
  14. $fn = $name(...);
  15. var_dump($fn('x'));
  16. $name = ['A', 'b'];
  17. $fn = $name(...);
  18. var_dump($fn(2));
  19. $name = [new A, 'c'];
  20. $fn = $name(...);
  21. var_dump($fn(3));
  22. $name1 = 'A';
  23. $name2 = 'b';
  24. $fn = $name1::$name2(...);
  25. var_dump($fn(4));
  26. $name2 = 'c';
  27. $fn = (new A)->$name2(...);
  28. var_dump($fn(5));
  29. $fn = [A::class, 'b'](...);
  30. var_dump($fn(6));
  31. $o = new stdClass;
  32. $o->prop = A::b(...);
  33. ($o->prop)(7);
  34. $nam
  35. ?>
  36. --EXPECT--
  37. int(1)
  38. int(2)
  39. int(3)
  40. int(4)
  41. int(5)
  42. int(6)