
ReflectionProperty::isPublic 메소드는 속성이 public 접근자만 있으면 true을 반환합니다. 따라서, private 속성이 public accessor가 있으면 true을 반환하는 현상을 방지하기 위해서는 ReflectionProperty::isPublic 메소드 대신에 ReflectionProperty::isAccessible 메소드를 사용해야 합니다.
ReflectionProperty::isAccessible 메소드는 속성이 public 접근자나 protected 접근자, private 접근자 모두가 있으면 true을 반환합니다. 따라서, private 속성이 public accessor가 있으면 false을 반환합니다.
#hostingforum.kr
php
$reflectionClass = new ReflectionClass('클래스명');
$reflectionProperty = $reflectionClass->getProperty('속성명');
if (!$reflectionProperty->isAccessible()) {
// 속성이 private이거나 protected이면 접근이 불가능합니다.
}
또한, ReflectionProperty::setAccessible 메소드를 사용하여 private 속성을 public 접근자로 설정할 수도 있습니다.
#hostingforum.kr
php
$reflectionClass = new ReflectionClass('클래스명');
$reflectionProperty = $reflectionClass->getProperty('속성명');
$reflectionProperty->setAccessible(true);
2025-05-16 12:47