bug48770_2.phpt 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. --TEST--
  2. Bug #48770 (call_user_func_array() fails to call parent from inheriting class)
  3. --XFAIL--
  4. See Bug #48770
  5. --FILE--
  6. <?php
  7. class A {
  8. public function func($str) {
  9. var_dump(__METHOD__ .': '. $str);
  10. }
  11. private function func2($str) {
  12. var_dump(__METHOD__ .': '. $str);
  13. }
  14. protected function func3($str) {
  15. var_dump(__METHOD__ .': '. $str);
  16. }
  17. private function func22($str) {
  18. var_dump(__METHOD__ .': '. $str);
  19. }
  20. }
  21. class B extends A {
  22. public function func($str) {
  23. call_user_func_array(array($this, 'parent::func2'), array($str));
  24. call_user_func_array(array($this, 'parent::func3'), array($str));
  25. call_user_func_array(array($this, 'parent::func22'), array($str));
  26. call_user_func_array(array($this, 'parent::inexistent'), array($str));
  27. }
  28. private function func2($str) {
  29. var_dump(__METHOD__ .': '. $str);
  30. }
  31. protected function func3($str) {
  32. var_dump(__METHOD__ .': '. $str);
  33. }
  34. }
  35. class C extends B {
  36. public function func($str) {
  37. parent::func($str);
  38. }
  39. }
  40. $c = new C;
  41. $c->func('This should work!');
  42. ?>
  43. --EXPECTF--
  44. string(27) "A::func2: This should work!"
  45. string(27) "A::func3: This should work!"
  46. Warning: call_user_func_array() expects parameter 1 to be a valid callback, cannot access private method A::func22() in %s on line %d
  47. Warning: call_user_func_array() expects parameter 1 to be a valid callback, class 'A' does not have a method 'inexistent' in %s on line %d