Reflection ReflectionClass::getAttributes

(PHP 8)

ReflectionClass::getAttributes — 속성 가져오기


설명

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

이 클래스에 선언된 모든 속성을 ReflectionAttribute의 배열로 반환합니다.


매개변수

name
이 클래스 이름과 일치하는 속성에 대한 ReflectionAttribute 인스턴스만 포함하도록 결과를 필터링합니다.
flags
name이 제공된 경우 결과를 필터링하는 방법을 결정하기 위한 플래그입니다.

기본값은 0이며 클래스 name의 속성에 대한 결과만 반환합니다.

사용 가능한 유일한 다른 옵션은 ReflectionAttribute::IS_INSTANCEOF를 사용하는 것입니다. 이 옵션은 대신 필터링에 instanceof를 사용합니다.


반환 값

ReflectionAttribute 개체로서의 속성 배열입니다.


Examples

예제 #1 기본 사용법

                  
<?php
#[Attribute]
class Fruit {
}

#[Attribute]
class Red {
}

#[Fruit]
#[Red]
class Apple {
}

$class = new ReflectionClass('Apple');
$attributes = $class->getAttributes();
print_r(array_map(fn($attribute) => $attribute->getName(), $attributes));
?>
                  
                

위의 예는 다음을 출력합니다.

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

예제 #2 클래스 이름으로 결과 필터링

                  
<?php
#[Attribute]
class Fruit {
}

#[Attribute]
class Red {
}

#[Fruit]
#[Red]
class Apple {
}

$class = new ReflectionClass('Apple');
$attributes = $class->getAttributes('Fruit');
print_r(array_map(fn($attribute) => $attribute->getName(), $attributes));
?>
                  
                

위의 예는 다음을 출력합니다.

Array
(
    [0] => Fruit
)
                

예제 #3 상속을 통해 클래스 이름으로 결과 필터링

                  
<?php
interface Color {
}

#[Attribute]
class Fruit {
}

#[Attribute]
class Red implements Colour {
}

#[Fruit]
#[Red]
class Apple {
}

$class = new ReflectionClass('Apple');
$attributes = $class->getAttributes('Colour', ReflectionAttribute::IS_INSTANCEOF);
print_r(array_map(fn($attribute) => $attribute->getName(), $attributes));
?>
                  
                

위의 예는 다음을 출력합니다.

Array
(
    [0] => Red
)
                

기타