diff options
author | Felipe Pena <felipe@php.net> | 2009-07-19 03:25:49 +0000 |
---|---|---|
committer | Felipe Pena <felipe@php.net> | 2009-07-19 03:25:49 +0000 |
commit | d7db4660eec3326134653d6945dceb446db47b2b (patch) | |
tree | 702b5a84e9f4d268f6402c6e4d1c632cbf051398 | |
parent | 874e9e0006bcd58126dfc84f73bcff1c9594fc8c (diff) | |
download | php-git-d7db4660eec3326134653d6945dceb446db47b2b.tar.gz |
- Tests related to bug #48770
-rw-r--r-- | Zend/tests/bug48770.phpt | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/Zend/tests/bug48770.phpt b/Zend/tests/bug48770.phpt new file mode 100644 index 0000000000..4e2794a4ad --- /dev/null +++ b/Zend/tests/bug48770.phpt @@ -0,0 +1,51 @@ +--TEST-- +Bug #48770 (call_user_func_array() fails to call parent from inheriting class) +--FILE-- +<?php + +class A { + public function func($str) { + var_dump(__METHOD__ .': '. $str); + } + private function func2($str) { + var_dump(__METHOD__ .': '. $str); + } + protected function func3($str) { + var_dump(__METHOD__ .': '. $str); + } + private function func22($str) { + var_dump(__METHOD__ .': '. $str); + } +} + +class B extends A { + public function func($str) { + static $avoid_crash = 0; + + if ($avoid_crash++ == 1) { + print "This method shouldn't be called when using parent::func!\n"; + return; + } + + call_user_func_array(array($this, 'parent::func'), array($str)); + } + private function func2($str) { + var_dump(__METHOD__ .': '. $str); + } + protected function func3($str) { + var_dump(__METHOD__ .': '. $str); + } +} + +class C extends B { + public function func($str) { + parent::func($str); + } +} + +$c = new C; +$c->func('This should work!'); + +?> +--EXPECTF-- +%unicode|string%(26) "A::func: This should work!" |