Statement on glibc/iconv Vulnerability

ReflectionFunctionAbstract::getAttributes

(PHP 8)

ReflectionFunctionAbstract::getAttributesGets Attributes

Açıklama

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

Returns all attributes declared on this function or method as an array of ReflectionAttribute.

Bağımsız Değişkenler

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.

Dönen Değerler

Array of attributes, as a ReflectionAttribute object.

Örnekler

Örnek 1 Basic usage with a class method

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

Yukarıdaki örneğin çıktısı:

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

Örnek 2 Basic usage with a function

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

Yukarıdaki örneğin çıktısı:

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

Örnek 3 Filtering results by class name

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

Yukarıdaki örneğin çıktısı:

Array
(
    [0] => Fruit
)

Örnek 4 Filtering results by class name, with inheritance

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

Yukarıdaki örneğin çıktısı:

Array
(
    [0] => Red
)

add a note

User Contributed Notes

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