ReflectionClass::getAttributes

(PHP 8)

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

Описание

publicReflectionClass::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 )

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

To Top