indirect_call_array_004.phpt 996 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. --TEST--
  2. Indirect method call by array - Testing exception and method magics
  3. --FILE--
  4. <?php
  5. class foo {
  6. static public function abc() {
  7. throw new Exception('foo');
  8. }
  9. public function __call($a, $b) {
  10. printf("From %s:\n", __METHOD__);
  11. throw new Exception($a);
  12. }
  13. static public function __callStatic($a, $b) {
  14. printf("From %s:\n", __METHOD__);
  15. throw new Exception($a);
  16. }
  17. }
  18. $arr = array('foo', 'abc');
  19. try {
  20. $arr();
  21. }
  22. catch (Exception $e) {
  23. echo $e->getMessage(), "\n";
  24. }
  25. $arr = array('foo', '123');
  26. try {
  27. $arr();
  28. }
  29. catch (Exception $e) {
  30. echo $e->getMessage(), "\n";
  31. }
  32. echo "------\n";
  33. $foo = new foo;
  34. $arr = array($foo, 'abc');
  35. try {
  36. $arr();
  37. }
  38. catch (Exception $e) {
  39. echo $e->getMessage(), "\n";
  40. }
  41. $foo = new foo;
  42. $arr = array($foo, '123');
  43. try {
  44. $arr();
  45. }
  46. catch (Exception $e) {
  47. echo $e->getMessage(), "\n";
  48. }
  49. ?>
  50. --EXPECT--
  51. foo
  52. From foo::__callStatic:
  53. 123
  54. ------
  55. foo
  56. From foo::__call:
  57. 123