PHP 8.5.0 Alpha 1 available for testing

ReflectionParameter::getAttributes

(PHP 8)

ReflectionParameter::getAttributesDevuelve los atributos

Descripción

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

Devuelve todos los atributos declarados en este parámetro 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 básico

<?php
#[Attribute]
class
Fruit {
}

#[
Attribute]
class
Red {
}

function
fruitBasket(
#[
Fruit]
#[
Red]
string $apple
) { }

$reflection = new ReflectionFunction('fruitBasket');
$parameter = $reflection->getParameters()[0];
$attributes = $parameter->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 {
}

function
fruitBasket(
#[
Fruit]
#[
Red]
string $apple
) { }

$reflection = new ReflectionFunction('fruitBasket');
$parameter = $reflection->getParameters()[0];
$attributes = $parameter->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 {
}

function
fruitBasket(
#[
Fruit]
#[
Red]
string $apple
) { }

$reflection = new ReflectionFunction('fruitBasket');
$parameter = $reflection->getParameters()[0];
$attributes = $parameter->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