ReflectionFunctionAbstract::getAttributes

(PHP 8)

ReflectionFunctionAbstract::getAttributesDevuelve los atributos

Descripción

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

Devuelve todos los atributos declarados en esta función o método en forma de un array de objetos 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

Un array de atributos, en forma de objetos ReflectionAttribute.

Ejemplos

Ejemplo #1 Uso básico con un método de clase

<?php
#[Attribute]
class
Fruit {
}

#[
Attribute]
class
Red {
}

class
Factory {
#[
Fruit]
#[
Red]
public function
makeApple(): string
{
return
'apple';
}
}

$method = new ReflectionMethod('Factory', 'makeApple');
$attributes = $method->getAttributes();
print_r(array_map(fn($attribute) => $attribute->getName(), $attributes));
?>

El resultado del ejemplo sería:

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

Ejemplo #2 Uso básico con una función

<?php
#[Attribute]
class
Fruit {
}

#[
Attribute]
class
Red {
}

#[
Fruit]
#[
Red]
function
makeApple(): string
{
return
'apple';
}

$function = new ReflectionFunction('makeApple');
$attributes = $function->getAttributes();
print_r(array_map(fn($attribute) => $attribute->getName(), $attributes));
?>

El resultado del ejemplo sería:

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

Ejemplo #3 Resultados filtrados por nombre de clase

<?php
#[Attribute]
class
Fruit {
}

#[
Attribute]
class
Red {
}

#[
Fruit]
#[
Red]
function
makeApple(): string
{
return
'apple';
}

$function = new ReflectionFunction('makeApple');
$attributes = $function->getAttributes('Fruit');
print_r(array_map(fn($attribute) => $attribute->getName(), $attributes));
?>

El resultado del ejemplo sería:

Array
(
    [0] => Fruit
)

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

<?php
interface Color {
}

#[
Attribute]
class
Fruit {
}

#[
Attribute]
class
Red implements Color {
}

#[
Fruit]
#[
Red]
function
makeApple(): string
{
return
'apple';
}

$function = new ReflectionFunction('makeApple');
$attributes = $function->getAttributes('Color', ReflectionAttribute::IS_INSTANCEOF);
print_r(array_map(fn($attribute) => $attribute->getName(), $attributes));
?>

El resultado del ejemplo sería:

Array
(
    [0] => Red
)

Ver también

add a note

User Contributed Notes

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