이 글은 주로 PHP의 매직 메소드와 매직 상수를 소개합니다. 이제는 모든 사람과 공유합니다. 도움이 필요한 친구들이 참고할 수 있습니다.
__destruct() 소멸자 메서드
객체가 사라지는 여러 상황
1, 변수를 삭제하려면 명시적으로
unset함수를 사용하세요.
2,스크립트가 완료된 후 실행이 끝나면 자동으로 소멸됩니다3, 객체 변수의 값을 변경하면 자동으로 소멸됩니다
소멸자 메소드의 역할
릴리스하는 것이 주요 역할입니다 개체가 차지하는 추가 리소스! 물건 자체보다는! ㅋㅋㅋ ) 정의!
생성자 및 소멸자의 특성을 요약하십시오. 상황이 발생했을 때만
위의 세 가지 특성을 동시에 충족하는 메소드가php에 많이 있는데, 이를 "마법의 메소드"라고 합니다!
객체를 복제할 때 자동으로 호출되는 매직 메소드입니다.
객체를 복제할 때 자동으로 이 매직 메소드를 호출합니다! 새로 복제된 개체를 초기화하는 역할을 담당합니다!
__set()
액세스할 수 없는 속성에 값 할당액세스할 수 없는 속성에 값 할당
:
__set()일단
__set()Magic 메소드를 정의하면 가 액세스할 수 없는 속성에 값을 할당하면 가 자동으로 이 메소드를 실행합니다. 이때 처리 능력은 사용자 자신에게 부여됩니다!
하나는 액세스할 수 없는 속성의 속성 이름입니다.
하나는 액세스할 수 없는 속성의 값입니다. 액세스할 수 없는 속성의 값 가져오기: __get() 정의된 후 __get() 매직 메소드, 가 접근할 수 없는 속성의 값을 얻으면 가 자동으로 메소드를 실행합니다. 이때 처리 능력은 사용자 자신에게 부여됩니다! 이 매직 메소드에는 속성의 속성 이름인 하나의 매개변수만 필요합니다! 참고: __get 및 __set 실제 프로젝트에서는 두 방법 모두 쌍으로 나타나는 경우가 많습니다! 게다가 이 두 가지 방법은 개체의 개인 속성을 일괄 처리하는 데 자주 사용됩니다! 위 코드는 속성의 원래 내부 구조가 변경되지 않도록 사용자가 속성을 추가하지 못하도록 제한할 수도 있습니다! 액세스할 수 없는 속성 삭제: __unset() 일반적으로 말하면 , unset 함수를 전달할 수 있습니다. 공개 속성 삭제 개체의: 그러나 속성에 액세스할 수 없는 경우(예: private 또는 존재하지 않는 경우) __unset 메서드가 자동으로 실행됩니다. 삭제할 수 있는지 여부는 여전히 다릅니다. __unset 내부 구현에 대해 알아보세요! 이 방법에는 현재 삭제된 속성의 이름인 하나의 매개변수만 필요합니다! __unset에서 아무 것도 수행되지 않으면 기본값은 삭제할 수 없다는 것입니다(물론 오류는 보고되지 않습니다!) 액세스할 수 없는 속성이 있는지 확인하려면: __isset() 속성이 액세스할 수 없는 속성인 경우 속성이 존재하는지 확인할 때 이 메서드의 실행이 자동으로 트리거됩니다! 마찬가지로 이 방법에도 현재 기술이 결정해야 하는 속성 이름인 매개변수가 필요합니다! 접근할 수 없는 객체 메소드(비정적 메소드)를 호출하면 매직 메소드가 자동으로 실행됩니다! 생각하기: 현재 이 매직 메서드에는 몇 개의 매개변수가 필요합니까? 매개변수 1: 메서드 이름, stringtype 매개변수 2: arraytype, 매개변수 개수가 불확실하므로 모든 매개변수를 배열에만 넣을 수 있습니다 이 메서드가 아무 작업도 수행하지 않는 경우: 액세스할 수 없는 클래스 메서드(정적 메서드)를 호출하면 매직 메서드가 자동으로 이 메소드를 정의할 때 메소드는 정적 메소드여야 하므로 메소드 이름 앞에 static 키워드를 추가해야 합니다! 작은 사례 다음 목적을 달성하도록 수학 클래스를 설계합니다. Call 메서드 f1: 1, 11 매개변수가 전달되면 해당 값을 반환합니다. 의 제곱 2, 2 매개변수가 전달되면 제곱의 합 3이 반환되고, 3 매개변수가 전달되면 세제곱의 합 이 반환됩니다. 이것은 메소드 오버로딩을 사용하여 수행됩니다: 객체를 함수(또는 메소드)로 호출하면 매직 메소드가 자동으로 실행됩니다! 현재는 많이 사용되지 않습니다! 앞서 배운 익명 함수를 떠올려보세요: 참고: 클로저 객체로 함수를 성공적으로 호출하기 위해 $func를 사용할 수 있는 이유는 함수가 있기 때문입니다. 클로저 객체에 __invokeMagic method 객체를 문자열로 사용하면 모방 메소드가 자동으로 실행됩니다! 그리고 이 메소드의 반환 값은 일반적으로 객체를 문자열로 직렬화한 결과일 수 있습니다! 실제로 이때 시스템은 자동으로 __toString 이 메서드의 실행을 트리거합니다. 은 현재 클래스 이름을 나타냅니다! self와의 차이점에 유의하세요. self는 클래스 자체(클래스 이름뿐만 아니라 구조)를 나타내는 반면, __CLASS__는 클래스 이름(클래스 이름)입니다. ) 은 현재 메소드 이름을 나타냅니다! 여러 PHP "마법 상수" Name Description __LINE__ 파일의 현재 줄 번호입니다. __FILE__ 파일의 전체 경로 및 파일 이름입니다. 포함된 파일 내에서 사용되는 경우 포함된 파일의 이름을 반환합니다. __DIR__ 파일이 위치한 디렉터리입니다. 포함된 파일 내에서 사용되는 경우 포함된 파일이 있는 디렉터리를 반환합니다. dirname(__FILE__)과 동일합니다. 디렉터리 이름은 루트 디렉터리가 아닌 이상 뒤에 슬래시를 포함하지 않습니다. __FUNCTION__ 함수 이름. 이 상수는 함수가 정의되었을 때 함수의 이름을 반환합니다(대소문자 구분). __CLASS__ 클래스 이름입니다. 이 상수는 클래스가 정의되었을 때의 이름을 반환합니다(대소문자 구분). PHP 5.4부터 __CLASS__는 특성에도 작동합니다. 특성 메서드 내에서 사용되는 경우 __CLASS__는 특성 메서드를 호출하는 클래스의 이름입니다. __TRAIT__ 특성의 이름입니다. PHP 5.4부터 이 상수는 정의된 대로 특성의 이름을 반환합니다(대소문자 구분). 특성 이름에는 해당 특성이 선언된 범위가 포함됩니다(예: FooBar). __METHOD__ 클래스의 메소드 이름 (PHP 5.0.0에서 새로 추가됨). 정의된 대로 메서드의 이름을 반환합니다(대소문자 구분). __NAMESPACE__ 현재 네임스페이스의 이름입니다(대소문자 구분). __get() 액세스할 수 없는 속성의 값 가져오기
__unset()액세스할 수 없는 속성 삭제
__isset() 속성이 존재합니다
__call()접근할 수 없는 객체 메소드(비정적 메소드)를 호출할 때
__callstatic() 액세스할 수 없는 클래스 메서드(정적 메서드) 호출
__invoke()
__toString()
Magic 상수
__CLASS__
__METHOD__
위 내용은 PHP의 매직 메소드 및 매직 상수의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!