가장 좋은 방법은 테스트하는 것입니다.
그러나 간단한 대답은 가비지 정리 중에 __destruct가 호출된다는 것입니다. 가비지 정리가 로컬 변수를 호출 할 수있는 범위가 없을 때이를 정리하는 진행중인 프로세스는 누구나 도움이되지 않는 거친 것입니다.
그러나 여기에 몇 가지 샘플 코드, 그리고 완전히 스크립트로 내부적으로 범위를 종료 할 때 발생하는 설명 결과.
<?php
class testingdestructor {
public function __construct($num) {
$this->num = $num;
}
public function __destruct() {
echo "I am number {$this->num}\n";
}
}
class testing2{
public function __construct($num) {
$this->classtest = new testingdestructor($num);
}
public function __destruct() {
echo "I am not a number\n";
}
}
$iam1 = new testingdestructor(1);
$iam4 = new testing2(4);
function testfunction() {
$iam2 = new testingdestructor(2);
}
testfunction();
$iam3 = new testingdestructor(3);
unset($iam1);
클래스 기능이 이상한 세트의 출력과 바르가 해제 마찬가지로,이 함수의 끝이 __destruct를 호출하는 것을 우리에게 보여줍니다이
I am number 2
I am number 1
I am number 3
I am not a number
I am number 4
이며, 적어도 연습 스크립트 정리의 끝은 역순으로 작성됩니다.
스크립트가 종료 될 때 (종료 시퀀스 중). –
소스로 먼저 이동하십시오 : PHP 매뉴얼 .. 인용구 : "소멸자 메소드는 특정 오브젝트에 대한 다른 참조가 없거나 종료 순서에 관계없이 호출됩니다."그래서 더 이상 사용하지 않으면 또는 스크립트가 끝나거나 죽습니다. http://www.php.net/manual/en/language.oop5.decon.php – mishu