우선 PHP는 클래스 정의에서 속성 이름을 검색하고 그 값을 반환하려고 시도합니다. 속성이 없다면 - PHP는 __get ($ var)를 호출하려고합니다. 여기서 원하는 것을 반환 할 수 있습니다. 이것은 액세스하려는 모든 클래스 멤버에 대해 정의해야하는 Java와 유사한 getters/setter를 알고있는 사람들에게는 약간 혼란스러운 행동입니다. - 그것은 자바와 같은 게터/세터를 사용하는 것이 편안 할 때
당신은 다음과 같이 쓸 수 있습니다 :
public function __set($var, $value)
{
if (method_exists($this, $method = "_set_" . $var))
{
call_user_func(array($this, $method), $value);
}
}
public function __get($var)
{
if (method_exists($this, $method = "_get_" . $var))
{
return call_user_func(array($this, $method), $value);
}
}
을 다음 사용자 정의의 getter/setter를
protected function _get_myValue()
{
return $this->_myValue;
}
protected function _set_myValue($value)
{
$this->_myValue = $value;
}
및 액세스를 정의하여이 코드를 사용 이 방법으로 정의 된 메소드에 :
$obj->myValue = 'Hello world!';
출처
2009-05-22 09:59:49
Jet
__isset() 오버로드로 처리 할 수 있습니다. –