source: src/router/php7/Zend/tests/closures/closure_from_callable_error.phpt @ 31874

Last change on this file since 31874 was 31874, checked in by brainslayer, 3 months ago

update php

File size: 6.4 KB
Line 
1--TEST--
2Testing Closure::fromCallable() functionality: Errors
3--FILE--
4<?php
5
6include('closure_from_callable.inc');
7
8echo 'Cannot access privateInstance method statically'."\n";
9try {
10        $fn = Closure::fromCallable(['Foo', 'privateInstanceFunc']);
11        echo "Test failed to fail and return was : ".var_export($fn, true)."\n";
12}
13catch (\TypeError $te) {
14        //This is the expected outcome.
15}
16catch (\Throwable $t) {
17        echo "Wrong exception type thrown: ".get_class($t)." : ".$t->getMessage()."\n";
18}
19
20
21echo 'Cannot access privateInstance method statically with colon scheme'."\n";
22try {
23        $fn = Closure::fromCallable('Foo::privateInstanceFunc');
24        echo "Test failed to fail and return was : ".var_export($fn, true)."\n";
25}
26catch (\TypeError $te) {
27        //This is the expected outcome.
28}
29catch (\Throwable $t) {
30        echo "Wrong exception type thrown: ".get_class($t)." : ".$t->getMessage()."\n";
31}
32
33echo 'Cannot access privateInstance method'."\n";
34try {
35        $fn = Closure::fromCallable([new Foo, 'privateInstanceFunc']);
36        echo "Test failed to fail and return was : ".var_export($fn, true)."\n";
37}
38catch (\TypeError $te) {
39        //This is the expected outcome.
40}
41catch (\Throwable $t) {
42        echo "Wrong exception type thrown: ".get_class($t)." : ".$t->getMessage()."\n";
43}
44
45echo 'SubClass cannot access private instance method'."\n";
46try {
47        $fn = Closure::fromCallable([new SubFoo, 'privateInstanceFunc']);
48        echo "Test failed to fail, closure is : ".var_export($fn, true)."\n";
49}
50catch (\TypeError $te) {
51        //This is the expected outcome.
52}
53catch (\Throwable $t) {
54        echo "Wrong exception type thrown: ".get_class($t)." : ".$t->getMessage()."\n";
55}
56
57echo 'Cannot access private static function of instance'."\n";
58try {
59        $fn = Closure::fromCallable([new Foo, 'privateStaticFunction']);
60        echo "Test failed to fail, closure is : ".var_export($fn, true)."\n";
61}
62catch (\TypeError $te) {
63        //This is the expected outcome.
64}
65catch (\Throwable $t) {
66        echo "Wrong exception type thrown: ".get_class($t)." : ".$t->getMessage()."\n";
67}
68
69echo 'Cannot access private static method statically'."\n";
70try {
71        $fn = Closure::fromCallable(['Foo', 'privateStaticFunction']);
72        echo "Test failed to fail, closure is : ".var_export($fn, true)."\n";
73}
74catch (\TypeError $te) {
75        //This is the expected outcome.
76}
77catch (\Throwable $t) {
78        echo "Wrong exception type thrown: ".get_class($t)." : ".$t->getMessage()."\n";
79}
80
81echo 'Cannot access private static method statically with colon scheme'."\n";
82try {
83        $fn = Closure::fromCallable('Foo::privateStaticFunction');
84        echo "Test failed to fail, closure is : ".var_export($fn, true)."\n";
85}
86catch (\TypeError $te) {
87        //This is the expected outcome.
88}
89catch (\Throwable $t) {
90        echo "Wrong exception type thrown: ".get_class($t)." : ".$t->getMessage()."\n";
91}
92
93echo 'Non-existent method should fail'."\n";
94try {
95        $fn = Closure::fromCallable('Foo::nonExistentFunction');
96        echo "Test failed to fail, closure is : ".var_export($fn, true)."\n";
97}
98catch (\TypeError $te) {
99        //This is the expected outcome.
100}
101catch (\Throwable $t) {
102        echo "Wrong exception type thrown: ".get_class($t)." : ".$t->getMessage()."\n";
103}
104
105echo 'Non-existent class should fail'."\n";
106try {
107        $fn = Closure::fromCallable(['NonExistentClass', 'foo']);
108        echo "Test failed to fail, closure is : ".var_export($fn, true)."\n";
109}
110catch (\TypeError $te) {
111        //This is the expected outcome.
112}
113catch (\Throwable $t) {
114        echo "Wrong exception type thrown: ".get_class($t)." : ".$t->getMessage()."\n";
115}
116
117echo 'Non-existent function should fail'."\n";
118try {
119        $fn = Closure::fromCallable('thisDoesNotExist');
120        echo "Test failed to fail, closure is : ".var_export($fn, true)."\n";
121}
122catch (\TypeError $te) {
123        //This is the expected outcome.
124}
125catch (\Throwable $t) {
126        echo "Wrong exception type thrown: ".get_class($t)." : ".$t->getMessage()."\n";
127}
128
129
130echo 'Subclass cannot closure over parent private instance method'."\n";
131try {
132        $subFoo = new SubFoo;
133        $fn = $subFoo->closePrivateInvalid();
134        echo "Test failed to fail, closure is : ".var_export($fn, true)."\n";
135}
136catch (\TypeError $te) {
137        //This is the expected outcome.
138}
139catch (\Throwable $t) {
140        echo "Wrong exception type thrown: ".get_class($t)." : ".$t->getMessage()."\n";
141}
142
143echo 'Subclass cannot closure over parant private static method'."\n";
144try {
145        $subFoo = new SubFoo;
146        $fn = $subFoo->closePrivateStaticInvalid();
147        echo "Test failed to fail, closure is : ".var_export($fn, true)."\n";
148}
149catch (\TypeError $te) {
150        //This is the expected outcome.
151}
152catch (\Throwable $t) {
153        echo "Wrong exception type thrown: ".get_class($t)." : ".$t->getMessage()."\n";
154}
155
156echo 'Function scope cannot closure over protected instance method'."\n";
157try {
158        $fn = functionAccessProtected();
159        echo "Test failed to fail, closure is : ".var_export($fn, true)."\n";
160}
161catch (\TypeError $te) {
162        //This is the expected outcome.
163}
164catch (\Throwable $t) {
165        echo "Wrong exception type thrown: ".get_class($t)." : ".$t->getMessage()."\n";
166}
167
168echo 'Function scope cannot closure over private instance method'."\n";
169try {
170        $fn = functionAccessPrivate();
171        echo "Test failed to fail, closure is : ".var_export($fn, true)."\n";
172}
173catch (\TypeError $te) {
174        //This is the expected outcome.
175}
176catch (\Throwable $t) {
177        echo "Wrong exception type thrown: ".get_class($t)." : ".$t->getMessage()."\n";
178}
179
180echo 'Access private instance method of parent object through "self::" to parent method'."\n";
181try {
182        $foo = new SubFoo;
183        $fn = $foo->getSelfColonParentPrivateInstanceMethod();
184        echo "Test failed to fail, closure is : ".var_export($fn, true)."\n";
185}
186catch (\TypeError $te) {
187        //This is the expected outcome.
188}
189catch (\Throwable $t) {
190        echo "Wrong exception type thrown: ".get_class($t)." : ".$t->getMessage()."\n";
191}
192
193echo "OK\n";
194
195?>
196===DONE===
197--EXPECT--
198
199Cannot access privateInstance method statically
200Cannot access privateInstance method statically with colon scheme
201Cannot access privateInstance method
202SubClass cannot access private instance method
203Cannot access private static function of instance
204Cannot access private static method statically
205Cannot access private static method statically with colon scheme
206Non-existent method should fail
207Non-existent class should fail
208Non-existent function should fail
209Subclass cannot closure over parent private instance method
210Subclass cannot closure over parant private static method
211Function scope cannot closure over protected instance method
212Function scope cannot closure over private instance method
213Access private instance method of parent object through "self::" to parent method
214OK
215===DONE===
Note: See TracBrowser for help on using the repository browser.