Gets Attributes

# ReflectionProperty::getAttributes

(PHP 8)

ReflectionProperty::getAttributes — Gets Attributes

### 说明

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

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

### 参数

`name`
  过滤结果，匹配此类名，仅包含 ReflectionAttribute 实例的属性。
`flags`
  如果提供了 `name`，则用于确定如何过滤结果的 flag。 默认值为 `0`，这将导致返回的结果只属于类 `name` 的属性。 唯一可用的其他选项是使用 `ReflectionAttribute::IS_INSTANCEOF`，它将改为使用 `instanceof` 进行过滤。

### 返回值

Array of attributes, as a ReflectionAttribute object.

### 示例

示例 #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));
    ?>

以上示例会输出：

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

示例 #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));
    ?>

以上示例会输出：

    Array
    (
        [0] => Fruit
    )

示例 #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));
    ?>

以上示例会输出：

    Array
    (
        [0] => Red
    )

### 参见

- ReflectionClass::getAttributes() - 获取所有属性
- ReflectionClassConstant::getAttributes() - Gets Attributes
- ReflectionFunctionAbstract::getAttributes() - Gets Attributes
- ReflectionParameter::getAttributes() - Gets Attributes

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open