PHP 8.5.0 Alpha 1 available for testing

ReflectionClassConstant::getAttributes

(PHP 8)

ReflectionClassConstant::getAttributesVerifica los atributos

Descripción

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

Verifica todos los atributos declarados en esta constante de clase en forma de un array de objetos ReflectionAttribute.

Parámetros

name

Filtrar los resultados para incluir únicamente las instancias de ReflectionAttribute para los atributos correspondientes a este nombre de clase.

flags

Flags para determinar cómo filtrar los resultados, si name es proporcionado.

El valor por omisión es 0 que solo retornará los resultados para los atributos que son de la clase name.

La única otra opción disponible es utilizar ReflectionAttribute::IS_INSTANCEOF, que utilizará instanceof para el filtrado.

Valores devueltos

Un array de atributos, en forma de objetos ReflectionAttribute.

Ejemplos

Ejemplo #1 Uso simple

<?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));
?>

El ejemplo anterior mostrará :

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

Ejemplo #2 Resultados filtrados por nombre de clase

<?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));
?>

El ejemplo anterior mostrará :

Array
(
    [0] => Fruit
)

Ejemplo #3 Resultados filtrados por nombre de clase, con herencia

<?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));
?>

El ejemplo anterior mostrará :

Array
(
    [0] => Red
)

Ver también

add a note

User Contributed Notes

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