
__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