File: new_with_ctor_arguments_parentheses.phpt

package info (click to toggle)
php8.4 8.4.11-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 208,108 kB
  • sloc: ansic: 1,060,628; php: 35,345; sh: 11,866; cpp: 7,201; pascal: 4,913; javascript: 3,091; asm: 2,810; yacc: 2,411; makefile: 689; xml: 446; python: 301; awk: 148
file content (111 lines) | stat: -rw-r--r-- 1,966 bytes parent folder | download
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