Return to __call_007.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 a statically declared __call. ! 3: --FILE-- ! 4: <?php ! 5: class A { ! 6: static 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: Warning: The magic method __call() must have public visibility and cannot be static in %s on line 3 ! 56: ---> Invoke __call via simple method call. ! 57: NULL ! 58: Exception caught OK; continuing. ! 59: ! 60: ! 61: ---> Invoke __call via scope resolution operator within instance. ! 62: NULL ! 63: Exception caught OK; continuing. ! 64: ! 65: ! 66: ---> Invoke __call via scope resolution operator within child instance. ! 67: NULL ! 68: Exception caught OK; continuing. ! 69: ! 70: ! 71: ---> Invoke __call via callback. ! 72: NULL ! 73: Exception caught OK; continuing. ! 74: ==DONE==