1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
|
--TEST--
Immediate access on new object with constructor arguments' parentheses
--FILE--
<?php
class A implements ArrayAccess
{
const C = 'constant' . PHP_EOL;
public $property = 'property' . PHP_EOL;
public static $staticProperty = 'static property' . PHP_EOL;
public function __invoke(): void
{
echo '__invoke' . PHP_EOL;
}
public function method(): void
{
echo 'method' . PHP_EOL;
}
public static function staticMethod(): void
{
echo 'static method' . PHP_EOL;
}
public function offsetExists(mixed $offset): bool
{
echo 'offsetExists' . PHP_EOL;
return true;
}
public function offsetGet(mixed $offset): mixed
{
echo 'offsetGet' . PHP_EOL;
return null;
}
public function offsetSet(mixed $offset, mixed $value): void {}
public function offsetUnset(mixed $offset): void {}
}
$class = A::class;
echo new A()::C;
echo new A()::{'C'};
echo new $class()::C;
echo new $class()::{'C'};
echo new (trim(' A '))()::C;
echo new (trim(' A '))()::{'C'};
echo new A()->property;
echo new $class()->property;
echo new (trim(' A '))()->property;
echo new A()::$staticProperty;
echo new $class()::$staticProperty;
echo new (trim(' A '))()::$staticProperty;
new A()();
new $class()();
new (trim(' A '))()();
new A()->method();
new $class()->method();
new (trim(' A '))()->method();
new A()::staticMethod();
new $class()::staticMethod();
new (trim(' A '))()::staticMethod();
new A()['key'];
new $class()['key'];
new (trim(' A '))()['key'];
isset(new A()['key']);
isset(new $class()['key']);
isset(new (trim(' A '))()['key']);
?>
--EXPECT--
constant
constant
constant
constant
constant
constant
property
property
property
static property
static property
static property
__invoke
__invoke
__invoke
method
method
method
static method
static method
static method
offsetGet
offsetGet
offsetGet
offsetExists
offsetExists
offsetExists
|