3v4l.org

run code in 500+ PHP versions simultaneously
<?php #[Attribute(Attribute::TARGET_CLASS | Attribute::TARGET_METHOD)] readonly class UseFilter { /** * @param string $filterClass */ public function __construct( /** @phan-suppress PhanWriteOnlyPublicProperty */ public string $filterClass, ) { } } #[UseFilter('class level')] class Foobar { #[UseFilter('method level')] public function foobaz(): void { } } $class = new ReflectionClass(Foobar::class); $allFilters = []; foreach ($class->getAttributes(UseFilter::class) as $attr) { var_dump($attr->getTarget()); } $method = $class->getMethod('foobaz'); foreach ($method->getAttributes(UseFilter::class) as $attr) { var_dump($attr->getTarget()); }
Output for 8.3.0 - 8.3.30, 8.4.1 - 8.4.21, 8.5.0 - 8.5.6
int(1) int(4)

preferences:
48.74 ms | 711 KiB | 4 Q