
ReflectionProperty::hasType 메소드는 프로퍼티가 지정된 타입을 가질 때 true를 반환합니다. 하지만 null일 때 true를 반환하는 현상은 PHP의 타입 체크에 대한 특수한 규칙 때문입니다.
PHP는 null을 모든 타입의 하위 타입으로 간주합니다. 따라서 null은 모든 타입의 인스턴스로 간주됩니다. 따라서 ReflectionProperty::hasType 메소드는 null을 지정된 타입과 일치하는 것으로 간주합니다.
따라서 null이 아닌 프로퍼티의 타입을 정확하게 확인하려면 null 체크를 추가해야 합니다.
예를 들어, 다음 코드는 프로퍼티가 지정된 타입을 가질 때 true를 반환합니다.
#hostingforum.kr
php
if ($property->hasType($type) && $property->getValue() !== null) {
// 프로퍼티가 지정된 타입을 가집니다.
}
또는, 다음과 같이 null 체크를 추가하여 프로퍼티의 타입을 정확하게 확인할 수 있습니다.
#hostingforum.kr
php
if ($property->hasType($type) && $property->getValue() !== null && gettype($property->getValue()) === $type) {
// 프로퍼티가 지정된 타입을 가집니다.
}
이러한 방법으로 ReflectionProperty::hasType 메소드를 사용하여 정확한 타입을 확인할 수 있습니다.
2025-04-26 12:31