
로드 온리 속성이 false인 경우에도 isReadOnly가 true인 이유는 ReflectionProperty::isReadOnly가 속성의 읽기 전용 여부를 확인하는 것이 아니라, 속성이 실제로 읽기 전용인지 여부를 확인하기 때문입니다.
속성이 읽기 전용이 아닌 경우에도 isReadOnly가 true가 될 수 있는 이유는 속성이 private 또는 protected로 선언된 경우에 속성이 읽기 전용으로 처리되는 경우가 있기 때문입니다.
예를 들어, 다음 코드를 통해 private 속성이 읽기 전용으로 처리되는 것을 확인할 수 있습니다.
#hostingforum.kr
php
class Test {
private $test;
public function __construct() {
$this->test = 'value';
}
}
$reflectionClass = new ReflectionClass('Test');
$reflectionProperty = $reflectionClass->getProperty('test');
$reflectionProperty->setAccessible(true);
echo $reflectionProperty->isReadOnly() ? 'true' : 'false'; // true
또한, 속성이 final로 선언된 경우에도 속성이 읽기 전용으로 처리되는 경우가 있습니다.
#hostingforum.kr
php
class Test {
final public $test;
public function __construct() {
$this->test = 'value';
}
}
$reflectionClass = new ReflectionClass('Test');
$reflectionProperty = $reflectionClass->getProperty('test');
$reflectionProperty->setAccessible(true);
echo $reflectionProperty->isReadOnly() ? 'true' : 'false'; // true
따라서, ReflectionProperty::isReadOnly가 true인 경우에는 속성이 실제로 읽기 전용인지 여부를 확인해야 합니다.
2025-04-25 05:29