void __set(string name, mixed value)
클래스의 인스턴스가 가진 멤버 변수에 새로운 값을 할당할 때 호출된다.
name 멤버 변수에 value 값을 할당한다.
클래스의 인스턴스가 가진 멤버 변수에 새로운 값을 할당할 때 호출된다.
name 멤버 변수에 value 값을 할당한다.
$time->hour = 22
와 같이 인스턴스가 가진 멤버 변수에 새로운 값을 할당할 경우 __set() 메소드가 정의 되어 있다면 $hour에 22라는 값일 할당되기 전에 호출된다.
mixed __get(mixed name)
클래스의 인스턴스가 가진 멤버 변수를 참조하여 그 값을 얻을 때 호출된다.
name 멤버 변수 값를 반환한다.
클래스의 인스턴스가 가진 멤버 변수를 참조하여 그 값을 얻을 때 호출된다.
name 멤버 변수 값를 반환한다.
echo $time->hour;
와 같이 인스턴스가 가진 멤버 변수를 참조할경우 __get() 메소드가 정의 되어 있다면 반환하기 전에 호출한다.
ex) $time->hour +=25
위와같은 경우 먼저 __get()메소드가 먼저 호출되고 __set() 메소드가 호출된 후에 멤버변수 $time->hour 에 계산값을 설정한다.
<?
class Word {
private $x = array("num1" => 123, "num2" => 234, "num3" => 345);
public $y;
function __get($name) {
echo "__get(".$name.") 메소드 호출!";
if (array_key_exists($name, $this -> x)) {
echo " [성공]\n";
return $this -> x[$name];
} else {
echo " [실패]\n";
return NULL;
}
}
function __set($name, $value) {
echo "__set(".$name.", ".$value.") 메소드 호출!";
if (array_key_exists($name, $this -> x)) {
echo " [성공]\n";
$this -> x[$name] = $value;
} else {
echo " [실패]\n";
}
}
}
$word = new Word();
$word -> data = 26; //__set(data, 26) 메소드 호출! [실패]
$word -> num2 = 235; //__set(num2, 235) 메소드 호출! [성공]
$word -> y = 114; //멤버변수에 $y가 정의 되어 있기 때문에 메소드를 호출하지 않는다.
$word -> num3++; //__get(num3) 메소드 호출! [성공],__set(num3, 346) 메소드 호출! [성공]
var_dump($word);
/* object(Word)#1 (2) {
["x:private"]=>
array(3) {
["num1"]=>
int(123)
* ["num2"]=>
int(235)
["num3"]=>
int(346)
}
["y"]=>
int(114)
}
*/
?>
728x90
'PHP 주요레퍼런스 > 객체지향 프로그래밍' 카테고리의 다른 글
class 상속과 생성자 (0) | 2022.07.22 |
---|---|
소멸자 __destruct() (0) | 2011.10.24 |
생성자 __constructor() (0) | 2011.10.24 |
$this 참조 (0) | 2011.10.24 |
멤버 접근 제한자 (0) | 2011.10.24 |