Annotation of embedaddon/php/ext/standard/tests/general_functions/callbacks_001.phpt, revision 1.1.1.1

1.1       misho       1: --TEST--
                      2: ZE2 Callbacks of static functions
                      3: --FILE--
                      4: <?php
                      5: class A {
                      6:     public static function who() {
                      7:         echo "A\n";
                      8:     }
                      9:     public static function who2() {
                     10:         echo "A\n";
                     11:     }
                     12: }
                     13: 
                     14: class B extends A {
                     15:     public static function who() {
                     16:         echo "B\n";
                     17:     }
                     18: }
                     19: 
                     20: class C extends B {
                     21:     public function call($cb) {
                     22:         echo join('|', $cb) . "\n";
                     23:         call_user_func($cb);
                     24:     }
                     25:     public function test() {
                     26:         $this->call(array('parent', 'who'));
                     27:         $this->call(array('C', 'parent::who'));
                     28:         $this->call(array('B', 'parent::who'));
                     29:         $this->call(array('E', 'parent::who'));
                     30:         $this->call(array('A', 'who'));
                     31:         $this->call(array('C', 'who'));
                     32:         $this->call(array('B', 'who2'));
                     33:     }
                     34: }
                     35: 
                     36: class D {
                     37:     public static function who() {
                     38:         echo "D\n";
                     39:     }
                     40: }
                     41: 
                     42: class E extends D {
                     43:     public static function who() {
                     44:         echo "E\n";
                     45:     }
                     46: }
                     47: 
                     48: $o = new C;
                     49: $o->test();
                     50: 
                     51: class O {
                     52:     public function who() {
                     53:         echo "O\n";
                     54:     }
                     55: }
                     56: 
                     57: class P extends O {
                     58:     function __toString() {
                     59:         return '$this';
                     60:     }
                     61:     public function who() {
                     62:         echo "P\n";
                     63:     }
                     64:     public function call($cb) {
                     65:         echo join('|', $cb) . "\n";
                     66:         call_user_func($cb);
                     67:     }
                     68:     public function test() {
                     69:         $this->call(array('parent', 'who'));
                     70:         $this->call(array('P', 'parent::who'));
                     71:         $this->call(array($this, 'O::who'));
                     72:         $this->call(array($this, 'B::who'));
                     73:     }
                     74: }
                     75: 
                     76: echo "===FOREIGN===\n";
                     77: 
                     78: $o = new P;
                     79: $o->test();
                     80: 
                     81: ?>
                     82: ===DONE===
                     83: --EXPECTF--
                     84: parent|who
                     85: B
                     86: C|parent::who
                     87: B
                     88: B|parent::who
                     89: A
                     90: E|parent::who
                     91: D
                     92: A|who
                     93: A
                     94: C|who
                     95: B
                     96: B|who2
                     97: A
                     98: ===FOREIGN===
                     99: parent|who
                    100: O
                    101: P|parent::who
                    102: O
                    103: $this|O::who
                    104: O
                    105: $this|B::who
                    106: 
                    107: Warning: call_user_func() expects parameter 1 to be a valid callback, class 'P' is not a subclass of 'B' in %s on line %d
                    108: ===DONE===

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