>  기사  >  백엔드 개발  >  PHP 매직 메소드 __clone에 대한 자세한 설명(코드 예)

PHP 매직 메소드 __clone에 대한 자세한 설명(코드 예)

易达
易达원래의
2020-05-28 18:15:402104검색

이 글의 목표:

1. PHP의 매직 메소드 정의를 이해합니다

2. __clone() 매직 메소드의 사용 시나리오를 이해합니다

3. __clone() 매직 메소드 사용법을 숙지합니다

) PHP의 매직 메소드 정의 이해

PHP는 __(두 개의 밑줄)로 시작하는 모든 클래스 메소드를 매직 메소드로 예약합니다. 따라서 클래스 메소드를 정의할 때 위의 매직 메소드를 제외하고 앞에 __를 붙이지 않는 것이 좋습니다.

(2) __clone() 매직 메소드의 사용 시나리오를 이해합니다

객체를 복제할 때 특별한 논리적 처리를 수행하려는 경우 클래스에 매직 메소드를 정의할 수 있습니다. 자신만의 특별한 비즈니스 로직을 작성하고

(3), __clone() 매직 메소드 사용법을 숙지하세요

요약:

1 PHP에서 __clone은 공개 함수 __clone() 형식으로 클래스에 정의됩니다. 2개의 __이 있어야 하고 __clone이어야 하며 0개의 매개변수를 사용해야 하며 그 이상 또는 그 이하의 매개변수는 작동하지 않습니다.

2 객체를 복제할 때 시스템은 자동으로 클래스 정의를 트리거합니다. 좋은 __clone 방법

모든 요약은 연습을 통해 도출됩니다. 이제 연습을 통해 요약을 시연함으로써 이해를 촉진하고 각 요약을 더 명확하고 직관적으로 이해할 수 있습니다.

사례 1,

연습 목표 :

1. PHP에서 __clone은 공용 함수 __clone() 형식으로 클래스에 정의됩니다. 여기서는 2__여야 하고 __clone이어야 하며 0개의 매개 변수를 사용해야 합니다. 어느 것도 작동하지 않습니다

구체적인 코드는 다음과 같습니다:

<?php
class Animal{
    public function eat(){

    }
    public function sleep(){

    }
    //魔术方法 
    public  function __clone(){
        echo "自动执行了Animal类中的__clone方法<br/>";
    }
}
$ani = new Animal();
?>

실행 결과는 다음과 같습니다:

Blank

오류가 보고되지 않는다는 뜻입니다

다음으로 이 __clone 메소드에 매개변수를 추가해 보고 무엇을 살펴보겠습니다. 실행 결과는

<?php
class Animal{
    public function eat(){

    }
    public function sleep(){

    }
    //魔术方法 
    public  function __clone($name){
        echo "自动执行了Animal类中的__clone方法<br/>";
    }
}
$ani = new Animal();
?>

실행 결과는 다음과 같습니다.

치명적인 오류: Method Animal::__clone()은 11행의 D:E-classclass-codeclassingindex.php에서 어떤 인수도 받아들일 수 없습니다

오류 메시지로 판단 , 이 메소드는 인수 매개변수를 허용할 수 없으므로 다음을 기억하십시오.

사례 2,

실용 목표:

1 객체를 복제할 때 시스템은 객체가 위치한 클래스의 정의된 __clone 메소드를 자동으로 트리거합니다.

구체적인 코드는 다음과 같습니다.

<?php
class Animal{
    public function eat(){

    }
    public function sleep(){

    }
    //魔术方法 
    public  function __clone(){
        echo "自动执行了Animal类中的__clone方法<br/>";
    }
}
$ani = new Animal();
$ani2 = clone $ani;

?>

우리는 __clone 메서드를 수동으로 호출하지 않았음을 발견했습니다. 즉, $ani->__clone()을 작성하지 않았는데 이 메서드가 계속 실행되는 이유는 무엇입니까? $ani2 = clone $ani; 라고 썼는데 이는 $ani 객체를 수동으로 복사한 다음 이 클래스에 이 마법 메서드를 정의하는 것과 같기 때문에 마치 마법처럼 갑자기 자동으로 실행됩니다

이것은 Please 밑줄은 하나가 아닌 두 개입니다. 그렇지 않으면 마법의 방법이 아닙니다. 다시 테스트해 보겠습니다

구체적인 코드는 다음과 같습니다.

<?php
class Animal{
    public function eat(){

    }
    public function sleep(){

    }
    //魔术方法 试着少一个_
    public  function _clone(){
        echo "自动执行了Animal类中的__clone方法<br/>";
    }
}
$ani = new Animal();
$ani2 = clone $ani;

?>

실행 결과는 다음과 같습니다.

Blank

__clone 메서드가 존재하지 않는다는 것은 자동으로 호출되므로 __ 두 개의 밑줄이면 어느 정도 작동하지 않는다는 점을 기억하세요.

요약:

1 이 문서에서는 주로 __clone 매직의 구체적인 사용 시나리오를 알아봅니다. PHP의 메소드와 구체적인 구현 메소드

이 기사가 도움이 되기를 바랍니다. 감사합니다! ! !

위 내용은 PHP 매직 메소드 __clone에 대한 자세한 설명(코드 예)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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