ホームページ >バックエンド開発 >PHPの問題 >PHPでオブジェクトを破棄する方法は何ですか

PHPでオブジェクトを破棄する方法は何ですか

青灯夜游
青灯夜游オリジナル
2021-09-13 18:01:222916ブラウズ

PHP でオブジェクトを破棄する方法: 1. 構文 "$obj = null;" を使用してオブジェクト変数に NULL を割り当てます; 2. unset() 関数を使用して、構文 "unset( $obj);"。

PHPでオブジェクトを破棄する方法は何ですか

このチュートリアルの動作環境: Windows7 システム、PHP7.1 バージョン、DELL G3 コンピューター

オブジェクトの破棄in 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でオブジェクトを破棄する方法は何ですか

オブジェクトに NULL を割り当てます変数 $obj を使用してオブジェクトを破棄します

$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;デフォルトでは、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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。