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
|
--TEST--
Hooks accept method-targeted attributes
--FILE--
<?php
#[Attribute]
class A {}
#[Attribute(Attribute::TARGET_METHOD)]
class B {}
class C {
public $prop {
#[A] get {}
#[B] set {}
}
}
$getAttr = (new ReflectionProperty(C::class, 'prop'))->getHook(PropertyHookType::Get)->getAttributes()[0];
var_dump($getAttr->getName());
var_dump($getAttr->getArguments());
var_dump($getAttr->newInstance());
$setAttr = (new ReflectionProperty(C::class, 'prop'))->getHook(PropertyHookType::Set)->getAttributes()[0];
var_dump($setAttr->getName());
var_dump($setAttr->getArguments());
var_dump($setAttr->newInstance());
?>
--EXPECT--
string(1) "A"
array(0) {
}
object(A)#3 (0) {
}
string(1) "B"
array(0) {
}
object(B)#5 (0) {
}
|