mirror of
https://github.com/php/php-src.git
synced 2024-09-21 18:07:23 +00:00
780a8280d2
RFC: https://wiki.php.net/rfc/property-hooks Co-authored-by: Nikita Popov <nikita.ppv@gmail.com>
41 lines
747 B
PHP
41 lines
747 B
PHP
--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) {
|
|
}
|