코드:
결과보기 »
<!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title>PHP OOP</title> </head> <body> <?php class PropertyOverloading { private $data = array(); // 오버로딩된 변수가 저장될 배열 생성 public $declared = 10; // public으로 선언된 프로퍼티 private $hidden = 20; // private로 선언된 프로퍼티 public function __set($name, $value) { echo "$name 프로퍼티를 {$value}의 값으로 생성합니다!"; $this->data[$name] = $value; } public function __get($name) { echo "$name 프로퍼티의 값을 읽습니다!<br>"; if (array_key_exists($name, $this->data)) { return $this->data[$name]; } else { return null; } } public function __isset($name) { echo "$name 프로퍼티가 설정되어 있는지 확인합니다!<br>"; return isset($this->data[$name]); } public function __unset($name) { echo "$name 프로퍼티를 해지합니다!"; unset($this->data[$name]); } } $obj = new PropertyOverloading(); // PropertyOverloading 객체 생성 $obj->prop = 1; // 동적 프로퍼티 생성 echo "<br><br>"; echo $obj->prop; // 동적 프로퍼티에 접근 echo "<br><br>"; var_dump(isset($obj->prop)); // 동적 프로퍼티로 isset() 함수 호출 echo "<br><br>"; unset($obj->prop); // 동적 프로퍼티로 unset() 함수 호출 echo "<br><br>"; var_dump(isset($obj->prop)); // 동적 프로퍼티로 isset() 함수 호출 echo "<br><br>"; echo $obj->declared; // 선언된 프로퍼티는 오버로딩을 사용하지 않음. echo "<br><br>"; echo $obj->hidden; // private로 선언된 프로퍼티는 클래스 외부에서 접근할 수 없으므로, 오버로딩을 사용함. ?> </body> </html>