>백엔드 개발 >PHP 문제 >PHP에서 객체를 파괴하는 방법은 무엇입니까

PHP에서 객체를 파괴하는 방법은 무엇입니까

青灯夜游
青灯夜游원래의
2021-09-13 18:01:222916검색

PHP에서 개체를 삭제하는 방법: 1. 개체 변수에 NULL을 할당합니다. 구문은 "$obj = null;"입니다. 2. unset() 함수를 사용하여 개체를 삭제합니다. 구문은 "unset($obj)입니다. );".

PHP에서 객체를 파괴하는 방법은 무엇입니까

이 튜토리얼의 운영 환경: Windows 7 시스템, PHP 버전 7.1, DELL G3 컴퓨터

PHP에서 개체를 삭제하는 방법

방법 1: 개체 변수에 NULL 할당

객체가 참조되지 않으면 소멸되므로 NULL을 할당할 수 있습니다.

예: 이러한 객체가 있습니다:

<?php
header("Content-type:text/html;charset=utf-8");
class Human {   
  public $name = &#39;张三&#39;;   
  public $gender = null;   
  public function __destruct() {   
      echo &#39;走了!<br />&#39;;   
  }   
}   
$obj = new Human();  
var_dump($obj);
?>

출력 결과:

PHP에서 객체를 파괴하는 방법은 무엇입니까

객체 변수 $obj에 NULL을 할당합니다. , 객체를 파괴합니다

$obj = null;
var_dump($obj);

출력 결과:

PHP에서 객체를 파괴하는 방법은 무엇입니까

방법 2: unset() 함수를 사용하여 객체를 파괴합니다

예 1:

<?php
class Human {   
  public $name = &#39;张三&#39;;   
  public $gender = null;   
  public function __destruct() {   
      echo &#39;走了!<br />&#39;;   
  }   
}   
$a = new Human();   
$b = $c = $d = $a;  
unset($a);    
echo $b->name; //输出张三
echo &#39;<hr />&#39;; //先输出换行线再输出走了    析构函数是在线上触发还是线下触发?
?>

답변:

$b = $c = $d = $a;Default pass-by-reference- 값 기준으로, 4개의 변수는 동일한 메모리를 가리키고, 설정되지 않은 경우 객체는 여전히 남아 있습니다. 다른 3개의 변수가 사용되므로 객체가 파괴되지 않으므로 소멸자는 오프라인으로 트리거됩니다(코드가 실행된 후 메모리가 자동으로 해제됩니다).

PHP에서 객체를 파괴하는 방법은 무엇입니까

예 2:

<?php
class Human { 
  public $name = &#39;张三&#39;; 
  public $gender = null; 
   
  public function __destruct() { 
      echo &#39;走了!<br />&#39;; 
  } 
} 
$e = $f = $g = new Human(); 
unset($e); 
unset($f); 
unset($g); 
echo &#39;<hr />&#39;; //同样的问题: 析构函数是在线上触发还是线下触发?
?>

코드 실행 후 메모리가 자동으로 해제되기 전 개체가 더 이상 어떤 변수에서도 참조되지 않으므로 메모리가 자동으로 해제됩니다....답은 온라인으로 트리거하는 것입니다

PHP에서 객체를 파괴하는 방법은 무엇입니까

추천 학습: "PHP 비디오 튜토리얼"

위 내용은 PHP에서 객체를 파괴하는 방법은 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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