Annotation of embedaddon/php/tests/classes/__call_006.phpt, revision 1.1
1.1 ! misho 1: --TEST--
! 2: Ensure exceptions are handled properly when thrown in __call.
! 3: --FILE--
! 4: <?php
! 5: class A {
! 6: function __call($strMethod, $arrArgs) {
! 7: var_dump($this);
! 8: throw new Exception;
! 9: echo "You should not see this";
! 10: }
! 11: function test() {
! 12: A::unknownCalledWithSRO(1,2,3);
! 13: }
! 14: }
! 15:
! 16: class B extends A {
! 17: function test() {
! 18: B::unknownCalledWithSROFromChild(1,2,3);
! 19: }
! 20: }
! 21:
! 22: $a = new A();
! 23:
! 24: echo "---> Invoke __call via simple method call.\n";
! 25: try {
! 26: $a->unknown();
! 27: } catch (Exception $e) {
! 28: echo "Exception caught OK; continuing.\n";
! 29: }
! 30:
! 31: echo "\n\n---> Invoke __call via scope resolution operator within instance.\n";
! 32: try {
! 33: $a->test();
! 34: } catch (Exception $e) {
! 35: echo "Exception caught OK; continuing.\n";
! 36: }
! 37:
! 38: echo "\n\n---> Invoke __call via scope resolution operator within child instance.\n";
! 39: $b = new B();
! 40: try {
! 41: $b->test();
! 42: } catch (Exception $e) {
! 43: echo "Exception caught OK; continuing.\n";
! 44: }
! 45:
! 46: echo "\n\n---> Invoke __call via callback.\n";
! 47: try {
! 48: call_user_func(array($b, 'unknownCallback'), 1,2,3);
! 49: } catch (Exception $e) {
! 50: echo "Exception caught OK; continuing.\n";
! 51: }
! 52: ?>
! 53: ==DONE==
! 54: --EXPECTF--
! 55: ---> Invoke __call via simple method call.
! 56: object(A)#%d (0) {
! 57: }
! 58: Exception caught OK; continuing.
! 59:
! 60:
! 61: ---> Invoke __call via scope resolution operator within instance.
! 62: object(A)#%d (0) {
! 63: }
! 64: Exception caught OK; continuing.
! 65:
! 66:
! 67: ---> Invoke __call via scope resolution operator within child instance.
! 68: object(B)#%d (0) {
! 69: }
! 70: Exception caught OK; continuing.
! 71:
! 72:
! 73: ---> Invoke __call via callback.
! 74: object(B)#%d (0) {
! 75: }
! 76: Exception caught OK; continuing.
! 77: ==DONE==
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>