Return to __call_006.phpt CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / tests / classes |
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==