File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / Zend / tests / fr47160.phpt
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue May 29 12:34:36 2012 UTC (12 years, 10 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, HEAD
php 5.4.3+patches

    1: --TEST--
    2: Calling method from array
    3: --FILE--
    4: <?php
    5: 
    6: class Hello {
    7: 	public function world($x) {
    8: 		echo "Hello, $x\n"; return $this;
    9: 	}
   10: }
   11: 
   12: class Hello2 {
   13: 	static public function world($x) {
   14: 		echo "Hello, $x\n";
   15: 	}
   16: }
   17: 
   18: class Magic {
   19: 	public function __call($f, $a) {
   20: 		printf("%s called (%s)!\n", __METHOD__, $f);
   21: 	}
   22: }
   23: 
   24: class Magic2 {
   25: 	public static function __callStatic($f, $a) {
   26: 		printf("%s called (%s)!\n", __METHOD__, $f);
   27: 	}
   28: }
   29: 
   30: class Magic3 {
   31: 	public static function __callStatic($f, $a) {
   32: 		printf("%s called (%s)!\n", __METHOD__, $f);
   33: 	}
   34: 	public function __call($f, $a) {
   35: 		printf("%s called (%s)!\n", __METHOD__, $f);
   36: 	}
   37: }
   38: 
   39: $f = array('Hello','world');
   40: var_dump($f('you'));
   41: var_dump(call_user_func($f, 'you'));
   42: 
   43: printf("-----\n");
   44: 
   45: $h= new Hello;
   46: $f = array($h,'world');
   47: var_dump($f('again'));
   48: var_dump(call_user_func($f, 'again'));
   49: 
   50: printf("-----\n");
   51: 
   52: function bar() {
   53: 	return array(new Hello,'world');
   54: }
   55: $f = bar();
   56: var_dump($f('there'));
   57: var_dump(call_user_func($f, 'there'));
   58: 
   59: printf("-----\n");
   60: 
   61: $x = function ($c,$v) { return array($c, $v); };
   62: 
   63: $c = new Hello;
   64: $m = 'world';
   65: $f = $x($c, $m);
   66: var_dump($f('devs'));
   67: var_dump(call_user_func($f, 'devs'));
   68: 
   69: printf("-----\n");
   70: 
   71: $f = array(new Magic, 'foo');
   72: $f();
   73: call_user_func($f);
   74: 
   75: printf("-----\n");
   76: 
   77: $f = array('Magic2', 'foo');
   78: $f();
   79: call_user_func($f);
   80: 
   81: 
   82: printf("-----\n");
   83: 
   84: $f = array('Magic3', 'foo');
   85: $f();
   86: call_user_func($f);
   87: 
   88: printf("-----\n");
   89: 
   90: $f = array(new Magic3, 'foo');
   91: $f();
   92: call_user_func($f);
   93: 
   94: printf("-----\n");
   95: 
   96: $f = array(new Hello2, 'world');
   97: var_dump($f('you'));
   98: var_dump(call_user_func($f, 'you'));
   99: 
  100: ?>
  101: --EXPECTF--
  102: Strict Standards: Non-static method Hello::world() should not be called statically in %s on line %d
  103: Hello, you
  104: 
  105: Notice: Undefined variable: this in %s on line %d
  106: NULL
  107: 
  108: Strict Standards: call_user_func() expects parameter 1 to be a valid callback, non-static method Hello::world() should not be called statically in %s on line %d
  109: Hello, you
  110: 
  111: Notice: Undefined variable: this in %s on line %d
  112: NULL
  113: -----
  114: Hello, again
  115: object(Hello)#1 (0) {
  116: }
  117: Hello, again
  118: object(Hello)#1 (0) {
  119: }
  120: -----
  121: Hello, there
  122: object(Hello)#2 (0) {
  123: }
  124: Hello, there
  125: object(Hello)#2 (0) {
  126: }
  127: -----
  128: Hello, devs
  129: object(Hello)#4 (0) {
  130: }
  131: Hello, devs
  132: object(Hello)#4 (0) {
  133: }
  134: -----
  135: Magic::__call called (foo)!
  136: Magic::__call called (foo)!
  137: -----
  138: Magic2::__callStatic called (foo)!
  139: Magic2::__callStatic called (foo)!
  140: -----
  141: Magic3::__callStatic called (foo)!
  142: Magic3::__callStatic called (foo)!
  143: -----
  144: Magic3::__call called (foo)!
  145: Magic3::__call called (foo)!
  146: -----
  147: Hello, you
  148: NULL
  149: Hello, you
  150: NULL

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