>  기사  >  백엔드 개발  >  PHP의 매직 메소드는 무엇입니까?

PHP의 매직 메소드는 무엇입니까?

青灯夜游
青灯夜游원래의
2019-06-04 13:40:143318검색

PHP의 매직 메소드는 무엇입니까?

객체 지향 프로그래밍에서 PHP는 프로그래밍에 많은 편의성을 제공하고 PHP에서 매우 중요한 역할을 하는 일련의 매직 메서드를 제공합니다. PHP의 매직 메소드는 일반적으로 __(두 개의 밑줄)로 시작하고 명시적인 호출이 필요하지 않지만 특정 조건에 의해 트리거됩니다.

PHP의 몇 가지 마법적인 방법을 소개하겠습니다. 도움이 되길 바랍니다.

__construct()

__construct()는 클래스의 생성자이며 가장 일반적으로 사용되는 함수입니다. 객체를 생성할 때 생성자에서 일부 초기화 작업을 수행할 수 있습니다. 인스턴스화할 때 해당 매개변수 수가 전달되는 한 생성자에 대한 매개변수를 원하는 수만큼 정의할 수 있습니다. 생성자에서 예외가 발생하면 객체가 생성되지 않습니다.

__desctruct()

__desctruct()는 클래스의 소멸자입니다. 일반적으로 객체가 소멸되거나 스크립트 실행이 종료되면 자동으로 호출됩니다. 데이터베이스 연결 닫기 등 일부 정리 작업은 소멸자에서 수행되는 경우가 많습니다.

__call()

__call()은 존재하지 않거나 액세스할 수 없는 메서드를 호출할 때 호출됩니다. 두 개의 매개변수를 받습니다. 하나는 호출할 메소드의 이름이고 다른 하나는 함수 매개변수를 포함하는 배열입니다. 이 메소드를 사용하여 하위 객체에서 동일한 이름의 함수를 호출할 수 있습니다.

__callStatic()

__callStatic()은 호출된 정적 메소드가 존재하지 않거나 권한이 부족할 때 호출됩니다. 두 개의 매개변수를 받습니다. 하나는 호출할 메소드의 이름이고 다른 하나는 함수 매개변수를 포함하는 배열입니다. 사용법은 __call()과 정확히 동일합니다.

__get()

__get()은 존재하지 않는 속성이나 비공개 속성에 액세스하려고 할 때 호출됩니다. 액세스된 속성의 이름을 나타내는 매개변수를 받고 속성 값을 반환합니다.

__set()

__set()은 액세스할 수 없는 속성을 수정하려고 할 때 호출됩니다. 두 개의 매개변수를 받습니다. 속성을 나타내는 이름과 속성을 나타내는 값입니다.

__isset()

__isset()은 액세스할 수 없는 속성에 대해 isset() 또는 empty() 메서드가 호출될 때 호출됩니다. 속성 이름을 나타내는 매개변수를 받습니다. 속성이 존재하는지 여부를 나타내는 부울 값을 반환해야 합니다.

__unset()

__unset()은 액세스할 수 없는 속성을 삭제하기 위해 unset() 함수가 호출될 때 호출됩니다. 속성의 이름을 나타내는 매개변수를 받습니다.

__sleep()

__sleep()은 객체를 직렬화할 때(serialize() 호출) 호출됩니다. 매개변수를 사용하지 않으며 직렬화해야 하는 모든 속성을 포함하는 배열을 반환해야 합니다. 이 매직 메서드 내에서 다른 작업도 수행할 수 있습니다.

한 가지 주의할 점은 이 함수에서 구조 분해 작업을 수행하지 않는다는 것입니다. 왜냐하면 실행 중인 객체에 영향을 미칠 수 있기 때문입니다.

__wakeup()

__wakeup()은 저장된 객체를 역직렬화하기 전에 호출됩니다. 매개변수를 받지 않으며 값을 반환하지 않습니다. 이를 사용하여 직렬화 중에 손실된 데이터베이스 연결이나 리소스를 처리할 수 있습니다.

__toString()

__toString()은 객체를 문자열로 사용할 때 호출되며 매개변수를 받지 않습니다. 이 방법을 사용하면 객체의 표현을 정의할 수 있습니다.

__invoke()

함수를 호출하여 객체를 호출할 때의 응답 메서드

__set_state()

클래스를 내보내기 위해 var_export()를 호출할 때 이 정적 메서드가 호출됩니다.

__clone()

__clone()을 사용하면 위의 문제를 해결할 수 있습니다. 이 매직 메소드는 객체에 clone 키워드가 사용될 때 호출됩니다.

위 내용은 PHP의 매직 메소드는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.