>백엔드 개발 >PHP 튜토리얼 >Tencent PHP 프로그래머 인터뷰 질문 - 15가지 매직 메소드 요약

Tencent PHP 프로그래머 인터뷰 질문 - 15가지 매직 메소드 요약

WBOY
WBOY원래의
2016-07-25 08:59:19972검색
  1. 기능: 현재 페이지에서 클래스를 사용할 때 해당 클래스의 파일을 자동으로 로드합니다.

  2. $className 매개변수는 클래스 이름을 사용자 정의할 수 있습니다.

  3. */

  4. function __autoload($className){

  5. require("$ className.class.php");//클래스 파일 로드 One.class.php Two.class.php는 이 파일과 같은 디렉터리에 있습니다

  6. < ;p>echo '------ -------------
    ';//다음의 경우 표시로 테스트합니다. 호출

  7. //다음 두 클래스는 이 파일에 정의되어 있지 않습니다

  8. $o =new One();//클래스 1개 사용, 초기화

  9. $t=new Two();//클래스 2개 사용, 초기화

  10. < p>?>

코드 복사

이 함수를 정상적으로 로드해야 하는 경우 파일 이름은 클래스 이름으로 설정(소문자 권장).class .php 등의 클래스 이름과 파일 이름 사이에 어느 정도 상관 관계가 있는 경우에만 해당 함수에서 예외가 발생하고 Catch에서 catch할 수 없는 경우 Fatal Error

이 표시됩니다.

2.__construct() 생성자

C#과 PHP4에서는 생성자의 함수 이름이 클래스 이름과 동일합니다. 물론 PHP5에서도 이를 지원합니다(__construct 메서드를 찾을 수 없는 경우 함수 이름은 클래스 이름과 동일합니다. 이 방식으로 작성하면 클래스 이름을 변경하려는 경우 생성자의 함수 이름을 변경하지 않고 클래스 이름만 변경하면 된다는 장점이 있습니다. 간단하게 샘플 코드를 작성해 보겠습니다.

  1. class PcYoYo{

  2. 비공개 $url;

  3. function __construct($url){

  4. $this->url=$url;

  5. }

  6. }

  7. ?>

코드 복사

3.__destruct() 소멸자

__destruct 소멸자 메소드, PHP는 객체가 파괴되기 전에(즉, 메모리에서 지워지기 전에) 이 메소드를 호출합니다

기본적으로 PHP는 객체 속성이 차지하는 메모리만 해제하고 객체 관련 리소스를 파괴합니다.

소멸자를 사용하면 객체를 사용한 후 임의의 코드를 실행하여 메모리를 지울 수 있습니다.

PHP가 스크립트가 더 이상 객체와 연결되어 있지 않다고 판단하면 소멸자가 호출됩니다.

함수의 네임스페이스 내에서는 함수가 반환될 때 이런 일이 발생합니다.

전역 변수의 경우 이는 스크립트 끝에서 발생합니다. 개체를 명시적으로 삭제하려는 경우 개체를 가리키는 변수에 다른 값을 할당할 수 있습니다. 일반적으로 변수를 NULL로 할당하거나 unset을 호출합니다.

4.__call()은 호출된 멤버 메소드가 클래스에 존재하지 않을 때(또는 권한이 없을 때) 호출됩니다. 오류 발생 후 일부 작업을 수행하거나 정보를 묻는 데 사용됩니다.

  1. //수업 초기화< p>

  2. class Person{

  3. private $name;

  4. private $age;

    🎜>

    비공개 $sex;

  5. 함수 걷기($시간,$분){

  6. echo "$시간: $ 분 걷겠습니다
    ";

  7. }

  8. function run(){

  9. < p> ;}

  10. //매직 메서드 사용 __call

  11. /*****

  12. 함수: 개체가 일부 작업을 수행하기 위해 클래스에 없는 함수를 호출할 때 자동으로 호출됩니다.

  13. 매개변수: $ proName 호출 함수 이름 $args 매개변수 배열 $proName, $args는 자신의 스타일에 맞게 변경할 수 있는 사용자 정의 형식 매개변수이지만 이 두 매개변수의 의미는 고정되어 있습니다

  14. *** **/

  15. < ; p>function __call($proName,$args){

  16. echo "$proName이(가) 존재하지 않습니다. 매개변수는 다음과 같습니다.";

  17. < ;print_r($args);

  18. echo '
    ';

  19. }

  20. < ; p>}// 클래스 끝

  21. //객체 인스턴스화

  22. $p=new Person();

  23. //Person 클래스에 존재하는 메소드 호출

  24. $p->walk(5,39);

  25. //Person 클래스에 존재하지 않는 메소드 호출

  26. $p->work();//매직 메소드인 __call을 사용하지 않으면 프로그램에서 오류가 발생합니다. 오류 메시지 치명적인 오류: 29행의 D:/phpnow/htdocs/holiday/magic__call.php에서 정의되지 않은 메소드 Person::work() 호출

  27. //매직 메소드가 다음과 같은 경우 Used_ _call, 객체가 클래스에 존재하지 않는 함수를 호출하면 __call이 자동으로 호출되어 특정 작업을 수행합니다.

  28. ?>

코드 복사

5.__clone()

이 함수는 개체가 복제될 때 자동으로 호출되며, 해당 기능은 복제된 복사본에 대해 일부 초기화 작업을 수행하는 것입니다.

  1. //수업 초기화< p>

  2. class 컴퓨터{

  3. //

  4. public $cpu='intel';

  5. private $monitor;

  6. private $keyboard;

  7. //매직 메소드 설정 __clone() 함수< ;/p>

  8. function __clone(){//이 매직 메서드를 설정하지 않으면 복제본은 완전히 동일해집니다. __clone 함수는 클래스의 생성자와 유사하며 일부 초기화를 수행합니다. 작업< /p>

  9. $this->cpu='AMD';//$this는 새로 생성된 복제 개체를 나타냅니다

  10. }

  11. //=와 clone의 차이를 비교하도록 소멸자를 설정합니다

  12. function __destruct(){

  13. echo '************************************
    ';

  14. }

  15. }// 클래스의 끝

  16. //객체 인스턴스화

  17. //객체에 대한 참조는 메모리에 저장되므로 참조 메서드를 사용하여 참조를 추가합니다. 스택 메모리, 포인터 용어로, 이는 $c1

  18. 가 가리키는 객체를 가리키는 포인터를 메모리에 생성하는 것을 의미합니다. //우리는 소멸자를 통해 객체의 복사본이 아니라고 판단합니다< ;/p>

  19. $c2=$c1;

  20. //객체를 복제하려면 clone 메소드를 사용하세요.

  21. $c3=clone $c1;

  22. //둘 사이의 정보 비교를 출력

  23. echo $c1- >cpu,'< br>';

  24. echo $c3->cpu,'
    ';

  25. ?<

    ;
코드 복사

6.__get() 객체가 호출한 멤버 속성이 선언되지 않았거나 레벨이 private 또는 protected 등인 경우, 이 함수에서 일부 작업을 자체적으로 수행할 수 있습니다

  1. class Person{

  2. private $name;

  3. public $nation;

  4. function __get($para){//필수 매개변수가 있습니다

  5. echo $para.'존재하지 않습니다';

  6. }

  7. }

  8. $p=new Person();

  9. $name=$p->name;//__get 함수 호출< / p>

  10. $nation=$p->nation;//__get 함수를 호출하지 마세요

  11. ?>

코드 복사

7.__set() 이 함수는 선언되지 않았거나 비공개 또는 보호 수준의 값을 할당할 때 호출됩니다. 이 기능 일부 작업

  1. 클래스 PC{

  2. private $key;

  3. function __set($key,$value){//두 개의 매개변수가 있어야 합니다. 하나는 멤버 속성이고 다른 하나는 매개변수입니다. 값은

  4. echo '.$value.'에 '.$key.'를 할당하지 못했습니다.';

  5. }< /p>

  6. }

  7. $p=new Pc();

  8. $p->key= 123;< ;/p>

  9. ?>

코드 복사

1 2 다음 페이지 마지막 페이지



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