File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / tests / classes / __call_006.phpt
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 23:48:06 2012 UTC (12 years, 5 months ago) by misho
Branches: php, MAIN
CVS tags: v5_4_3elwix, v5_4_29p0, v5_4_29, v5_4_20p0, v5_4_20, v5_4_17p0, v5_4_17, v5_3_10, HEAD
php

    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>