|
2 | 2 | Test closure isStatic |
3 | 3 | --FILE-- |
4 | 4 | <?php |
5 | | -class Foo { |
6 | | - public static function bar(){} |
7 | | - public function baz() {} |
8 | | - |
9 | | - public function qux() { |
10 | | - return static function(){}; |
| 5 | + |
| 6 | +namespace { |
| 7 | + class Foo { |
| 8 | + public static function bar(){} |
| 9 | + public function baz() {} |
| 10 | + |
| 11 | + public function qux() { |
| 12 | + return static function(){}; |
| 13 | + } |
11 | 14 | } |
| 15 | + |
| 16 | + $foo = new Foo; |
| 17 | + |
| 18 | + var_dump( |
| 19 | + (new ReflectionFunction(function(){}))->isStatic(), |
| 20 | + (new ReflectionFunction(static function(){}))->isStatic(), |
| 21 | + (new ReflectionFunction($foo->qux()))->isStatic(), |
| 22 | + (new ReflectionMethod($foo, 'bar'))->isStatic(), |
| 23 | + (new ReflectionMethod($foo, 'baz'))->isStatic(), |
| 24 | + |
| 25 | + // Static closure inference exceptions |
| 26 | + (new ReflectionFunction(function () { $$var; }))->isStatic(), |
| 27 | + (new ReflectionFunction(function () { $var(); }))->isStatic(), |
| 28 | + (new ReflectionFunction(function () { call_user_func('Foo::bar'); }))->isStatic(), |
| 29 | + (new ReflectionFunction(function () { ('Foo::bar')(); }))->isStatic(), |
| 30 | + (new ReflectionFunction(function () { Foo::bar(); }))->isStatic(), |
| 31 | + (new ReflectionFunction(function () { $this; }))->isStatic(), |
| 32 | + (new ReflectionFunction(function () { function () { $this; }; }))->isStatic(), |
| 33 | + (new ReflectionFunction(function () { function () { require $var; }; }))->isStatic(), |
| 34 | + (new ReflectionFunction(function () { function () { eval('Foo::bar();'); }; }))->isStatic(), |
| 35 | + ); |
12 | 36 | } |
13 | 37 |
|
14 | | -$foo = new Foo; |
| 38 | +namespace Foo { |
| 39 | + var_dump( |
| 40 | + // Static closure inference exceptions |
| 41 | + (new \ReflectionFunction(function () { call_user_func('Foo::bar'); }))->isStatic(), |
| 42 | + (new \ReflectionFunction(function () { ('Foo::bar')(); }))->isStatic(), |
| 43 | + (new \ReflectionFunction(function () { Foo::bar(); }))->isStatic(), |
| 44 | + ); |
| 45 | +} |
15 | 46 |
|
16 | | -var_dump( |
17 | | - (new ReflectionFunction(function(){}))->isStatic(), |
18 | | - (new ReflectionFunction(static function(){}))->isStatic(), |
19 | | - (new ReflectionFunction($foo->qux()))->isStatic(), |
20 | | - (new ReflectionMethod($foo, 'bar'))->isStatic(), |
21 | | - (new ReflectionMethod($foo, 'baz'))->isStatic(),); |
22 | 47 | ?> |
23 | 48 | --EXPECT-- |
24 | 49 | bool(true) |
25 | 50 | bool(true) |
26 | 51 | bool(true) |
27 | 52 | bool(true) |
28 | 53 | bool(false) |
| 54 | +bool(false) |
| 55 | +bool(false) |
| 56 | +bool(false) |
| 57 | +bool(false) |
| 58 | +bool(false) |
| 59 | +bool(false) |
| 60 | +bool(false) |
| 61 | +bool(false) |
| 62 | +bool(false) |
| 63 | +bool(false) |
| 64 | +bool(false) |
| 65 | +bool(false) |
0 commit comments