PHP Velho Oeste 2024

ReflectionProperty::getAttributes

(PHP 8)

ReflectionProperty::getAttributesGets Attributes

Beschreibung

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

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

Parameter-Liste

name

Die Ergebnisse werden so gefiltert, dass nur ReflectionAttribute-Instanzen für Attribute mit diesem Klassennamen enthalten sind.

flags

Flags, die festlegen, wie die Ergebnisse gefiltert werden sollen, wenn name angegeben wird.

Die Voreinstellung ist 0, was nur Ergebnisse für die Attribute der Klasse name liefert.

Die einzige andere Möglichkeit ist die Verwendung von ReflectionAttribute::IS_INSTANCEOF, wodurch stattdessen instanceof zum Filtern verwendet wird.

Rückgabewerte

Array of attributes, as a ReflectionAttribute object.

Beispiele

Beispiel #1 Basic usage

<?php
#[Attribute]
class
Fruit {
}

#[
Attribute]
class
Red {
}

class
Basket {
#[
Fruit]
#[
Red]
public
string $apple = 'apple';
}

$property = new ReflectionProperty('Basket', 'apple');
$attributes = $property->getAttributes();
print_r(array_map(fn($attribute) => $attribute->getName(), $attributes));
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

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

Beispiel #2 Filtering results by class name

<?php
#[Attribute]
class
Fruit {
}

#[
Attribute]
class
Red {
}

class
Basket {
#[
Fruit]
#[
Red]
public
string $apple = 'apple';
}

$property = new ReflectionProperty('Basket', 'apple');
$attributes = $property->getAttributes('Fruit');
print_r(array_map(fn($attribute) => $attribute->getName(), $attributes));
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

Array
(
    [0] => Fruit
)

Beispiel #3 Filtering results by class name, with inheritance

<?php
interface Color {
}

#[
Attribute]
class
Fruit {
}

#[
Attribute]
class
Red implements Color {
}

class
Basket {
#[
Fruit]
#[
Red]
public
string $apple = 'apple';
}

$property = new ReflectionProperty('Basket', 'apple');
$attributes = $property->getAttributes('Color', ReflectionAttribute::IS_INSTANCEOF);
print_r(array_map(fn($attribute) => $attribute->getName(), $attributes));
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

Array
(
    [0] => Red
)

add a note

User Contributed Notes

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