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

# ReflectionProperty::getAttributes

(PHP 8)

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

### Описание

public function ReflectionProperty::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 string $apple = 'apple';
    }

    $property = new ReflectionProperty('Basket', 'apple');
    $attributes = $property->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 string $apple = 'apple';
    }

    $property = new ReflectionProperty('Basket', 'apple');
    $attributes = $property->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 string $apple = 'apple';
    }

    $property = new ReflectionProperty('Basket', 'apple');
    $attributes = $property->getAttributes('Color', ReflectionAttribute::IS_INSTANCEOF);
    print_r(array_map(fn($attribute) => $attribute->getName(), $attributes));

    ?>

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

    Array
    (
        [0] => Red
    )

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

- ReflectionClass::getAttributes() - Получает атрибуты
- ReflectionClassConstant::getAttributes() - Получает атрибуты
- ReflectionFunctionAbstract::getAttributes() - Получает атрибуты
- ReflectionParameter::getAttributes() - Получает атрибуты

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open