File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / tests / classes / __call_007.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 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==

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>