
ReflectionProperty::isInitialized 함수는 객체의 속성이 초기화되었는지 확인하는 데 사용됩니다. 그러나 이 함수의 반환값이 항상 정확하지는 않습니다.
위 코드에서 $user->email의 경우 false가 반환되지 않고 true가 반환되는 이유는 PHP의 객체 초기화 규칙에 따라서입니다. PHP는 객체의 속성이 초기화되었는지 확인할 때, 속성이 선언되었을 때 초기화된 것으로 간주합니다. 따라서 $user->email은 선언되었기 때문에 true가 반환됩니다.
속성이 초기화되지 않은 경우 false를 반환받으려면, 속성을 초기화한 후에 ReflectionProperty::isInitialized 함수를 호출해야 합니다. 예를 들어, 다음과 같이 코드를 수정할 수 있습니다.
#hostingforum.kr
php
class User {
public $name;
public $email;
public function __construct() {
$this->name = 'John Doe';
$this->email = 'johndoe@example.com'; // 이 줄을 추가합니다.
}
}
$user = new User();
var_dump(R::isInitialized($user->email)); // true
또는, 속성을 초기화하지 않고 ReflectionProperty::isInitialized 함수를 호출할 수 있습니다.
#hostingforum.kr
php
class User {
public $name;
public $email;
public function __construct() {
$this->name = 'John Doe';
}
}
$user = new User();
var_dump(R::isInitialized($user->email)); // false
2025-04-22 00:44