"__set()"은 정의되지 않은 속성에 값을 할당할 때 자동으로 호출됩니다. 구문은 "public function __set(key,value){}"입니다. 정의되지 않은 속성이 호출되면 "__get()"이 호출됩니다. 구문은 "공용 함수 __get(이름){}"입니다.
이 튜토리얼의 운영 환경: Windows 7 시스템, PHP 버전 7.1, DELL G3 컴퓨터
PHP의 Magic 메소드는 일반적으로 __(두 개의 밑줄)로 시작하며 명시적으로 호출할 필요는 없지만 자동으로 호출됩니다. 특정 조건에서 호출됩니다.
Magic method | Function |
---|---|
__set() | 정의되지 않은 속성에 값을 할당할 때 자동 호출 |
__get() | 정의되지 않은 속성이 호출되면 자동으로 호출 |
1. __set() 메서드
현재 환경에서 정의되지 않거나 보이지 않는 클래스 속성에 값을 할당하면 __set() 메서드가 자동으로 호출됩니다. 이 메소드를 정의하는 구문 형식은 다음과 같습니다.
public function __set($key, $value){ ... ... ; }
그 중 $key 매개변수는 연산할 변수의 이름이고, $value는 $key 변수의 값입니다.
【예제】 다음은 __set() 메소드의 사용법을 보여주기 위해 간단한 예시를 사용합니다.
<?php class Website{ public $name; private $url; public function __set($key, $value){ echo '为“'.$key.'”赋值“'.$value.'”失败!<br>'; } } $object = new Website(); $object -> name = 'php中文网'; $object -> url = 'https://www.php.cn/'; $object -> title = 'PHP教程'; ?>
실행 결과는 다음과 같습니다.
为“url”赋值“https://www.php.cn/”失败! 为“title”赋值“PHP教程”失败!
__set() 메서드의 특성을 이용하면 __set() 메서드를 사용하여 private 키워드로 수정된 클래스의 속성을 할당하거나 수정할 수 있습니다.
<?php class Website{ public $name; private $url = ''; public function __set($key, $value){ if(isset($this->$key)){ $this -> $key = $value; }else{ echo '为“'.$key.'”赋值“'.$value.'”失败!<br>'; } } public function getUrl(){ echo $this -> url; } } $object = new Website(); $object -> name = 'php中文网'; $object -> url = 'https://www.php.cn/'; $object -> title = 'PHP教程'; $object -> getUrl(); ?>
실행 결과는 다음과 같습니다.
为“title”赋值“PHP教程”失败! https://www.php.cn/
2.__get() 메소드
현재 환경에서 정의되지 않거나 보이지 않는 클래스 속성을 호출하거나 얻을 때 __get() 메소드가 자동으로 호출됩니다. . 이 메소드를 정의하는 구문 형식은 다음과 같습니다.
public function __get($name){ ... ... ; }
매개변수 $name은 연산할 변수의 이름입니다.
【예제】 다음은 __get() 메서드의 사용을 보여주기 위해 간단한 예를 사용합니다.
<?php class Website{ public $url = 'https://www.php.cn/'; private $name = 'php中文网'; public function __get($name){ echo '获取:“'.$name.'”失败!'; } } $object = new Website(); echo $object -> url.'<br>'; echo $object -> name.'<br>'; echo $object -> title.'<br>'; ?>
실행 결과는 다음과 같습니다.
https://www.php.cn/ 获取:“name”失败! 获取:“title”失败!
추천 학습: "PHP Video Tutorial"
위 내용은 PHP 매직 메소드 __get() 및 __set()을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!