CascadiaPHP 2024

ReflectionParameter::getAttributes

(PHP 8)

ReflectionParameter::getAttributesGets Attributes

Descripción

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

Returns all attributes declared on this parameter as an array of ReflectionAttribute.

Parámetros

name

Filter the results to include only ReflectionAttribute instances for attributes matching this class name.

flags

Flags for determining how to filter the results, if name is provided.

Default is 0 which will only return results for attributes that are of the class name.

The only other option available, is to use ReflectionAttribute::IS_INSTANCEOF, which will instead use instanceof for filtering.

Valores devueltos

Array of attributes, as a ReflectionAttribute object.

Ejemplos

Ejemplo #1 Basic usage

<?php
#[Attribute]
class
Fruit {
}

#[
Attribute]
class
Red {
}

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

$reflection = new ReflectionFunction('fruitBasket');
$parameter = $reflection->getParameter('apple');
$attributes = $parameter->getAttributes();
print_r(array_map(fn($attribute) => $attribute->getName(), $attributes));
?>

El resultado del ejemplo sería:

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

Ejemplo #2 Filtering results by class name

<?php
#[Attribute]
class
Fruit {
}

#[
Attribute]
class
Red {
}

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

$reflection = new ReflectionFunction('fruitBasket');
$parameter = $reflection->getParameter('apple');
$attributes = $parameter->getAttributes('Fruit');
print_r(array_map(fn($attribute) => $attribute->getName(), $attributes));
?>

El resultado del ejemplo sería:

Array
(
    [0] => Fruit
)

Ejemplo #3 Filtering results by class name, with inheritance

<?php
interface Color {
}

#[
Attribute]
class
Fruit {
}

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

$reflection = new ReflectionFunction('fruitBasket');
$parameter = $reflection->getParameter('apple');
$attributes = $parameter->getAttributes('Color', ReflectionAttribute::IS_INSTANCEOF);
print_r(array_map(fn($attribute) => $attribute->getName(), $attributes));
?>

El resultado del ejemplo sería:

Array
(
    [0] => Red
)

add a note

User Contributed Notes

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