__get 메서드

__get 메서드는 존재하지 않거나 접근 불가능한 객체 속성의 값을 가져오려고 할 때 자동으로 호출됩니다. 이 마법 메서드는 하나의 매개변수, 즉 요청된 속성의 이름을 받습니다.

문법

phppublic function __get(string $name) {
  // 구현
}

예제

존재하지 않는 속성에 대한 값을 반환하는 __get 메서드를 가진 클래스를 만들어 보겠습니다:

php<?php
  class User {
    private $data = [
      'name' => 'John',
      'age' => 30
    ];
    
    public function __get($name) {
      if (array_key_exists($name, $this->data)) {
        return $this->data[$name];
      }
      return null;
    }
  }
  
  $user = new User();
  echo $user->name;
?>

코드 실행 결과:

php'John'

예제

__get 메서드를 사용하여 동적 속성을 구현할 수 있습니다:

php<?php
  class DynamicProperties {
    public function __get($name) {
      return "Dynamic value for {$name}";
    }
  }
  
  $obj = new DynamicProperties();
  echo $obj->test;
?>

코드 실행 결과:

php'Dynamic value for test'

함께 보기

  • 존재하지 않는 속성을 설정할 때 호출되는 __set 메서드
  • 존재하지 않는 메서드를 호출할 때 호출되는 __call 메서드