객체 지향프로그래밍에서 PHP는 프로그래밍에 많은 편의를 제공하는 일련의 마법의 방법을 제공합니다. PHP의 매직 메소드는 일반적으로 (두 개의 밑줄)로 시작하고 명시적인 호출이 필요하지 않지만 특정 조건에 의해 트리거됩니다. 이번 글에서는 php에서 흔히 사용되는 magic 메소드만 소개합니다. 필요하신 분들은 오셔서 참고하시면 됩니다.
자주 사용하는 매직 메소드는 Tostring () Call() autoLoad() clone() GET() SET () isset( ) unset()
1.Tostring() 참조할 때 호출되는 출력 개체를 정의하는 데 사용됩니다. 반환 값이 있어야 하는 일부 개체에 대한 정보를 인쇄하는 데 자주 사용됩니다.
예: 지속성이 있습니다. class
Persion per =new persion()
Echo per; //직접 호출하면 오류가 발생합니다
클래스 정의에 tostring() 메서드를 추가할 수 있습니다
코드는 다음과 같습니다.
Function Tostring() { $str=this->$name.this->age; Return $str; }
2.Clone () 객체 복사
참조 할당
$per1=$ per2; 그리고 이것은 메모리에 주소가 하나만 있습니다
그리고 $per1=clone $per2 이때 메모리 주소는 2개입니다
3. 클래스 인스턴스에 존재하지 않는 함수를 호출하면 자동으로 실행됩니다
클래스에 존재하지 않는 함수를 호출하면 syntax error가 발생하여 친숙한 프롬프트
를 제공합니다. 클래스에서 Call() 메소드를 선언할 수 있습니다.
Function call($funName,$argu) { Echo "名为".$funName."参数为".printf($argh)."的函数不存在", }
4.autoLoad 사용된 클래스 파일을 자동으로 로드합니다. 이 기능은 참조된 페이지에
를 추가하는 것입니다. php 파일을 페이지에 추가하려면 include 방법을 사용해야 합니다. 하지만 참조해야 할 페이지가 수십 개라면 너무 번거롭기 때문에 페이지에 자동 로드 방법
Function autoload($className) { Include $className.".php"; }을 사용하면 됩니다. 다른 클래스가 참조될 때마다 클래스 파일이 자동으로 참조됩니다. 필수 클래스 파일의 이름은 클래스 이름이어야 합니다.php
5.GET() 클래스의 개인 속성에 액세스합니다
클래스의 속성은 다음과 같습니다. 개인 속성으로 설정되어 있으며 클래스 인스턴스에서는 액세스할 수 없습니다. 그런데 어떻게 액세스할 수 있습니까? GET()을 사용할 수 있습니다
예:
person per=new person()Per->$name을 인스턴스화하는 클래스에는
Class person { Private $name; Private $age; }
가 있습니다. //이 방법으로는 값을 얻을 수 없습니다
그러나 클래스에 GET 메소드를 추가하면
Function GET($proName) { Return this->$proName; }Per->$name을 다시 호출하여 접근할 수 있습니다
어떤 사람들은 이런 식으로 프라이빗 변수에 직접 접근할 수 있습니다. ?
공개로 선언하면 임의로 읽을 수 있습니다. 비공개인 경우 get 메소드를 추가하면 비공개 속성이 호출될 때마다 GET 메소드의 내용이 호출되므로 몇 가지 논리적 처리를 추가할 수 있습니다. get 메소드에.
6.SET()은 클래스에 개인 속성을 설정합니다
원칙은 위와 동일합니다. 클래스 인스턴스를 호출하여 개인 속성에 값이 할당될 때마다 SET() 함수를 클래스에 추가할 수 있습니다. , SET 함수가 실행됩니다. 함수 프로토타입 :
Function SET($proName,$value) { This->$proName=$value; }메서드 할당이므로 논리적 처리가 가능합니다.
7.isset()은 클래스의 프라이빗 속성 또는 메서드인지 판단할 때 자동으로 호출됩니다. exists
먼저 isset 메소드를 소개하겠습니다. 이 메소드는 속성과 메소드가 존재하는지 확인하는 데 사용되지만, 클래스 인스턴스를 통해 클래스의 개인 속성이 존재하는지 여부를 확인할 수는 없습니다. ->$name);//반환값이 false인데 $ name 속성이 존재하는데 어떻게 해결하나요?
해결책:
1. $name을 개인 속성으로 정의합니다. 2. 클래스 정의에 Function isset($proName)
{
Return isset(this->$proName);//再类内部是可以访问私有属性的
}
를 추가합니다. 이 경우 반환 값은 다음과 같습니다. true;
8.unset()은 클래스에서 개인 변수를 지울 때 자동으로 호출됩니다
unset()과 결합하면 클래스에서 속성을 삭제해야 할 때 사용할 수 있습니다. 공개 속성을 직접 삭제할 수 있지만 비공개인 경우 이 방법으로는 달성할 수 없습니다. 어떻게 달성하려면 unset() 메소드를 사용하여 이 기능을 추가해야 합니까? 이제 unset($name)을 호출하여 person 클래스의 $name 속성을 삭제할 수 있습니다.
위 내용은 PHP에서 일반적으로 사용되는 매직 메소드 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!