정의:
PHP 클래스에서 두 개의 밑줄 "__"로 시작하는 메소드를 매직 메소드라고 합니다.
범주:
예: 생성 방법: __construct; 파괴 방법: __destruct; 동적 오버로딩: __set(), __get(), __call(), __callStatic(); __clone()
응용 시나리오:
1. 프로그램이 존재하지 않거나 보이지 않는 클래스 속성을 수정하려고 하면 PHP 엔진은 __set() 메서드를 호출합니다. is 이 메소드는 클래스에 정의되어 있습니다. __set()의 정의 형식은 다음과 같습니다.
function __set($name,$value){
//구현 세부정보
}
그 중 $name은 동적으로 생성된 변수의 이름이고, $value는 변수의 값이다.
2. 프로그램이 존재하지 않거나 보이지 않는 클래스 속성을 읽으려고 할 때 PHP 엔진은 물론 해당 메서드가 클래스에 정의되어 있는 경우 __get() 메서드를 호출합니다. __get()의 정의 형식은 다음과 같습니다.
function __get($name){
//구현 내용
}
그 중, $name은 동적 생성된 변수의 이름입니다.
3. 프로그램이 존재하지 않거나 보이지 않는 클래스 메서드를 호출하려고 하면 물론 해당 메서드가 클래스에 정의되어 있는 경우 PHP 엔진은 __call() 메서드를 호출합니다. __call() 메소드의 정의 형식은 다음과 같습니다.
function __call($name,$args){
//구현 세부정보
}
그 중 $name은 동적으로 생성된 메소드의 이름이고 $args는 배열 형태로 존재하는 메소드의 매개변수이다.
4. PHP5.3.0부터 __callStatic()을 사용하여 정적 메서드를 동적으로 생성할 수 있습니다. __callStatic()의 정의 형식은 다음과 같습니다.
function __callStatic($name,$args){
//구현 세부정보
}
그 중 $name은 동적으로 생성된 메소드의 이름이고, $args는 메소드의 매개변수로서 배열 형태로 존재한다.
5. __clone() 메서드가 정의되면 복사 시 클래스가 자동으로 이를 호출하므로 __clone() 메서드의 참조 특성에 대한 메모리를 다시 열 수 있습니다. __clone()의 정의 형식은 다음과 같습니다.
function __clone(){
//구현 세부정보
}
이상에서는 PHP 매직 메소드 내용을 포함하여 PHP 클래스의 매직 메소드에 대해 소개하였습니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되었으면 좋겠습니다.