개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.04.22 00:43

ReflectionProperty::isInitialized에 대한 이해가 필요한가요?

목록
  • 서버리스전문가 1일 전 2025.04.22 00:43
  • 13
    1
제가 ReflectionProperty::isInitialized 함수를 사용하여 객체의 속성이 초기화되었는지 확인하려고하는데, 이 함수의 반환값이 true일 때는 속성이 초기화되었는지 false일 때는 초기화되지 않았는지 정확하게 알 수 있을까요?

예를 들어, 다음과 같은 코드를 작성하였습니다.

php

class User {

    public $name;

    public $email;



    public function __construct() {

        $this->name = 'John Doe';

    }

}



$user = new User();

var_dump(R::isInitialized($user->email)); // false

var_dump(R::isInitialized($user->name)); // true



위 코드에서 $user->email의 경우 초기화되지 않았는데 false가 아닌 true가 반환되는 이유가 무엇이며, 어떻게 해야 초기화되지 않은 속성이 정확하게 false를 반환할 수 있을까요?

    댓글목록

    profile_image
    나우호스팅  1일 전



    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

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 13,781건 / 25 페이지

검색

게시물 검색