1. PHP의 매직 메소드 정의를 이해합니다
2. __clone() 매직 메소드의 사용 시나리오를 이해합니다
3. __clone() 매직 메소드 사용법을 숙지합니다
PHP는 __(두 개의 밑줄)로 시작하는 모든 클래스 메소드를 매직 메소드로 예약합니다. 따라서 클래스 메소드를 정의할 때 위의 매직 메소드를 제외하고 앞에 __를 붙이지 않는 것이 좋습니다.
객체를 복제할 때 특별한 논리적 처리를 수행하려는 경우 클래스에 매직 메소드를 정의할 수 있습니다. 자신만의 특별한 비즈니스 로직을 작성하고
요약:
1 PHP에서 __clone은 공개 함수 __clone() 형식으로 클래스에 정의됩니다. 2개의 __이 있어야 하고 __clone이어야 하며 0개의 매개변수를 사용해야 하며 그 이상 또는 그 이하의 매개변수는 작동하지 않습니다.
2 객체를 복제할 때 시스템은 자동으로 클래스 정의를 트리거합니다. 좋은 __clone 방법
모든 요약은 연습을 통해 도출됩니다. 이제 연습을 통해 요약을 시연함으로써 이해를 촉진하고 각 요약을 더 명확하고 직관적으로 이해할 수 있습니다.
연습 목표 :
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!