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

# ReflectionClass::getAttributes

(PHP 8)

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

### Описание

public function ReflectionClass::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 {
    }

    #[Fruit]
    #[Red]
    class Apple {
    }

    $class = new ReflectionClass('Apple');
    $attributes = $class->getAttributes();
    print_r(array_map(fn($attribute) => $attribute->getName(), $attributes));
    ?>

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

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

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

    <?php
    #[Attribute]
    class Fruit {
    }

    #[Attribute]
    class Red {
    }

    #[Fruit]
    #[Red]
    class Apple {
    }

    $class = new ReflectionClass('Apple');
    $attributes = $class->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 {
    }

    #[Fruit]
    #[Red]
    class Apple {
    }

    $class = new ReflectionClass('Apple');
    $attributes = $class->getAttributes(Color::class, ReflectionAttribute::IS_INSTANCEOF);
    print_r(array_map(fn($attribute) => $attribute->getName(), $attributes));
    ?>

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

    Array
    (
        [0] => Red
    )

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

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

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