Annotation of embedaddon/php/tests/classes/__call_007.phpt, revision 1.1.1.1
1.1 misho 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>