ReflectionClassConstant::getAttributes

(PHP 8)

ReflectionClassConstant::getAttributesПолучает атрибуты

Описание

public ReflectionClassConstant::getAttributes(?string $name = null, int $flags = 0): array

Возвращает все атрибуты, объявленные в этой константе класса, в виде массива ReflectionAttribute.

Список параметров

name

Фильтрация результатов, чтобы оставить только экземпляры ReflectionAttribute для атрибутов, соответствующих этому имени класса.

flags

Флаги для определения способа фильтрации результатов, если указан параметр name.

По умолчанию значение 0, которое возвращает результаты только для атрибутов, относящихся к классу name.

Единственным доступным вариантом является использование константы ReflectionAttribute::IS_INSTANCEOF, которая вместо этого будет использовать для фильтрации instanceof.

Возвращаемые значения

Массив атрибутов в виде объекта ReflectionAttribute.

Примеры

Пример #1 Простой пример

<?php
#[Attribute]
class
Fruit {
}

#[
Attribute]
class
Red {
}

class
Basket {
#[
Fruit]
#[
Red]
public const
APPLE = 'apple';
}

$classConstant = new ReflectionClassConstant('Basket', 'APPLE');
$attributes = $classConstant->getAttributes();
print_r(array_map(fn($attribute) => $attribute->getName(), $attributes));
?>

Результат выполнения приведённого примера:

Array
(
    [0] => Fruit
    [1] => Red
)

Пример #2 Фильтрация результатов по имени класса

<?php
#[Attribute]
class
Fruit {
}

#[
Attribute]
class
Red {
}

class
Basket {
#[
Fruit]
#[
Red]
public const
APPLE = 'apple';
}

$classConstant = new ReflectionClassConstant('Basket', 'APPLE');
$attributes = $classConstant->getAttributes('Fruit');
print_r(array_map(fn($attribute) => $attribute->getName(), $attributes));
?>

Результат выполнения приведённого примера:

Array
(
    [0] => Fruit
)

Пример #3 Фильтрация результатов по имени класса, с наследованием

<?php
interface Color {
}

#[
Attribute]
class
Fruit {
}

#[
Attribute]
class
Red implements Color {
}

class
Basket {
#[
Fruit]
#[
Red]
public const
APPLE = 'apple';
}

$classConstant = new ReflectionClassConstant('Basket', 'APPLE');
$attributes = $classConstant->getAttributes('Color', ReflectionAttribute::IS_INSTANCEOF);
print_r(array_map(fn($attribute) => $attribute->getName(), $attributes));
?>

Результат выполнения приведённого примера:

Array
(
    [0] => Red
)

Смотрите также

add a note add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top