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>