-
Notifications
You must be signed in to change notification settings - Fork 8k
Expand file tree
/
Copy pathwith_Override_okay.phpt
More file actions
86 lines (73 loc) · 1.57 KB
/
with_Override_okay.phpt
File metadata and controls
86 lines (73 loc) · 1.57 KB
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
--TEST--
#[\DelayedTargetValidation] with #[\Override]: invalid targets or actual overrides don't do anything
--FILE--
<?php
class Base {
public $val;
public string $hooked {
get => $this->hooked;
set => $value;
}
public const CLASS_CONST = '';
public function printVal() {
echo __METHOD__ . "\n";
}
}
#[DelayedTargetValidation]
#[Override] // Does nothing here
class DemoClass extends Base {
#[DelayedTargetValidation]
#[Override] // Does something here
public $val;
public string $hooked {
#[DelayedTargetValidation]
#[Override] // Does something here
get => $this->hooked;
#[DelayedTargetValidation]
#[Override] // Does something here
set => $value;
}
#[DelayedTargetValidation]
#[Override] // Does something here
public const CLASS_CONST = 'FOO';
public function __construct(
#[DelayedTargetValidation]
#[Override] // Does nothing here
$str
) {
echo "Got: $str\n";
$this->val = $str;
}
#[DelayedTargetValidation]
#[Override] // Does something here
public function printVal() {
echo 'Value is: ' . $this->val . "\n";
return 123;
}
}
#[DelayedTargetValidation]
#[Override] // Does nothing here
function demoFn() {
echo __FUNCTION__ . "\n";
return 456;
}
#[DelayedTargetValidation]
#[Override] // Does nothing here
const GLOBAL_CONST = 'BAR';
$d = new DemoClass('example');
$d->printVal();
var_dump($d->val);
$d->hooked = "foo";
var_dump($d->hooked);
var_dump(DemoClass::CLASS_CONST);
demoFn();
var_dump(GLOBAL_CONST);
?>
--EXPECT--
Got: example
Value is: example
string(7) "example"
string(3) "foo"
string(3) "FOO"
demoFn
string(3) "BAR"