개발자 Q&A

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

2025.06.27 06:37

Yac::__get 메서드에 대한 질문

목록
  • 모바일최적화광 24일 전 2025.06.27 06:37
  • 59
    1
제가 학습 중인 PHP 프레임워크인 Yac에서 __get 메서드에 대한 이해가 부족합니다.
__get 메서드는 어떤 역할을 하는지 정확히 모르겠습니다.
__get 메서드의 사용 예시를 알려주세요.
__get 메서드는 어떤 상황에서 호출되는지 궁금합니다.

    댓글목록

    profile_image
    나우호스팅  24일 전



    __get 메서드는 PHP의 Magic Method 중 하나로, 객체의 속성이 존재하지 않을 때 자동으로 호출됩니다.

    예를 들어, 다음 코드를 살펴보겠습니다.

    #hostingforum.kr
    php
    
    class Person {
    
        private $name;
    
    
    
        public function __get($property) {
    
            if ($property == 'name') {
    
                return $this->name;
    
            } else {
    
                return null;
    
            }
    
        }
    
    }
    
    
    
    $person = new Person();
    
    $person->name = 'John';
    
    echo $person->name; // John
    
    


    위 코드에서, `__get` 메서드는 `name` 속성이 존재하지 않을 때 호출되지 않습니다. 하지만, 속성이 존재할 때도 호출됩니다.

    __get 메서드는 객체의 속성이 존재하지 않을 때 자동으로 호출되기 때문에, 객체의 속성을 동적으로 생성하거나, 객체의 속성을 읽을 때 사용됩니다.

    예를 들어, 다음 코드를 살펴보겠습니다.

    #hostingforum.kr
    php
    
    class Person {
    
        private $attributes = array();
    
    
    
        public function __get($property) {
    
            if (array_key_exists($property, $this->attributes)) {
    
                return $this->attributes[$property];
    
            } else {
    
                return null;
    
            }
    
        }
    
    
    
        public function __set($property, $value) {
    
            $this->attributes[$property] = $value;
    
        }
    
    }
    
    
    
    $person = new Person();
    
    $person->name = 'John';
    
    echo $person->name; // John
    
    echo $person->age; // null
    
    


    위 코드에서, `__get` 메서드는 `age` 속성이 존재하지 않기 때문에 `null`을 반환합니다.

    __get 메서드는 객체의 속성이 존재하지 않을 때 자동으로 호출되기 때문에, 객체의 속성을 동적으로 생성하거나, 객체의 속성을 읽을 때 사용됩니다.

    예를 들어, 다음 코드를 살펴보겠습니다.

    #hostingforum.kr
    php
    
    class Person {
    
        private $attributes = array();
    
    
    
        public function __get($property) {
    
            if (array_key_exists($property, $this->attributes)) {
    
                return $this->attributes[$property];
    
            } else {
    
                $this->attributes[$property] = $this->$property;
    
                return $this->attributes[$property];
    
            }
    
        }
    
    
    
        public function __set($property, $value) {
    
            $this->attributes[$property] = $value;
    
        }
    
    }
    
    
    
    $person = new Person();
    
    $person->name = 'John';
    
    echo $person->name; // John
    
    echo $person->age; // 30
    
    


    위 코드에서, `__get` 메서드는 `age` 속성이 존재하지 않기 때문에 `age` 속성을 동적으로 생성하고, `30`을 반환합니다.

    __get 메서드는 객체의 속성이 존재하지 않을 때 자동으로 호출되기 때문에, 객체의 속성을 동적으로 생성하거나, 객체의 속성을 읽을 때 사용됩니다.

    __get 메서드는 다음과 같은 상황에서 호출됩니다.

    - 객체의 속성이 존재하지 않을 때
    - 객체의 속성이 읽을 때
    - 객체의 속성이 동적으로 생성될 때

    __get 메서드는 다음과 같은 예시를 사용할 수 있습니다.

    - 객체의 속성을 동적으로 생성할 때
    - 객체의 속성을 읽을 때
    - 객체의 속성을 수정할 때

    __get 메서드는 다음과 같은 장점을 가지고 있습니다.

    - 객체의 속성을 동적으로 생성할 수 있습니다.
    - 객체의 속성을 읽을 수 있습니다.
    - 객체의 속성을 수정할 수 있습니다.

    __get 메서드는 다음과 같은 단점을 가지고 있습니다.

    - 객체의 속성이 존재하지 않을 때 자동으로 호출되기 때문에, 속성이 존재할 때도 호출됩니다.
    - 객체의 속성이 동적으로 생성될 때, 속성이 존재하지 않을 때와 동일한 방식으로 동작합니다.

    2025-06-27 06:38

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

검색

게시물 검색