"__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() 메소드의 사용법을 보여주기 위해 간단한 예시를 사용합니다.
'; } } $object = new Website(); $object -> name = 'php中文网'; $object -> url = '//m.sbmmt.com/'; $object -> title = 'PHP教程'; ?>
실행 결과는 다음과 같습니다.
为“url”赋值“//m.sbmmt.com/”失败! 为“title”赋值“PHP教程”失败!
__set() 메서드의 특성을 이용하면 __set() 메서드를 사용하여 private 키워드로 수정된 클래스의 속성을 할당하거나 수정할 수 있습니다.
$key)){ $this -> $key = $value; }else{ echo '为“'.$key.'”赋值“'.$value.'”失败!
'; } } public function getUrl(){ echo $this -> url; } } $object = new Website(); $object -> name = 'php中文网'; $object -> url = '//m.sbmmt.com/'; $object -> title = 'PHP教程'; $object -> getUrl(); ?>
실행 결과는 다음과 같습니다.
为“title”赋值“PHP教程”失败! //m.sbmmt.com/
2.__get() 메소드
현재 환경에서 정의되지 않거나 보이지 않는 클래스 속성을 호출하거나 얻을 때 __get() 메소드가 자동으로 호출됩니다. . 이 메소드를 정의하는 구문 형식은 다음과 같습니다.
public function __get($name){ ... ... ; }
매개변수 $name은 연산할 변수의 이름입니다.
【예제】 다음은 __get() 메서드의 사용을 보여주기 위해 간단한 예를 사용합니다.
url.'
'; echo $object -> name.'
'; echo $object -> title.'
'; ?>
실행 결과는 다음과 같습니다.
//m.sbmmt.com/ 获取:“name”失败! 获取:“title”失败!
추천 학습: "PHP Video Tutorial"
위 내용은 PHP 매직 메소드 __get() 및 __set()을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!