この記事では、主に PHP デストラクターとリサイクル メカニズムの例について詳しく説明します。お役に立てれば幸いです。
// ===メモ パート 1===
/*
質問
1. オブジェクトを他のもの (true など) に代入すると、オブジェクトは破棄されますか?
答え: はい
2. 110.php のコードパート 4
なぜ 1 つは破棄され、2 つは空ですか?
最後のものは hr 行の下に表示されます。
答え: PHP ページが実行されたため、最後のものは破棄されます。
システムは最終的にリサイクルされ、この時点で $d が破棄されます。
そのため、hr 行の後ろに表示されます
*/
// ==。 =コード パート 1= ==
class Human2 { public $name = null; public $gender = null; public function __construct() { echo '出生了<br >'; } public function __destruct() { echo '再见<br >'; } }$a = new Human2();$b = new Human2();$c = new Human2();$d = new Human2();unset($a);//$b = false;$b = true;//改成true也可以销毁$c = null;echo '<hr >';
// オブジェクトのリサイクル メカニズム
// ===コード パート 2===
class Human { public $name = null; public $gender = null; public function __destruct() { echo '再见!<br >'; } }$a = new Human();$b = $c = $d = $a;unset($a);echo '<hr >';
/*
次に、質問は次のとおりです:
1. ?
2. HR ラインで死ぬのか、それとも HR ラインより下で死ぬのか?
答え: 灰色の線の下で一度死亡しました。
図 11101 に示すように、人間の家を開ける鍵 a が 1 つありません。
鍵 b、c、d の 3 つもあります。
最終的にすべてのコードが実行され、リサイクルメカニズムが開始されるまで、
いよいよお別れです。
*/
// ===コードパート3===
class Human { public $name = '张三'; public $gender = null; public function __destruct() { echo '再见!<br >'; } }$a = new Human();$b = $c = $d = $a;echo $a->name,'<br >'; //张三echo $b->name,'<br >'; //张三$b->name ='李四';echo $a->name,'<br >'; //李四echo $b->name,'<br >'; //李四unset($a);echo '<hr >';// hr线// 再见!
// ===コードパート4===
class Human { public $name = '张三'; public $gender = null; public function __destruct() { echo '再见!<br >'; } }$e = $f = $g = new Human();unset($e);echo 'unset e<br >';unset($f);echo 'unset f<br >';unset($g);// 本行unset触发对象消亡,然后执行下一行echo gecho 'unset g<br >';
/*
ここでページが実行されます 完了、オブジェクトが破棄され、デストラクターが実行されます
何個のオブジェクトが破棄されましたか?
答え:
オブジェクトは 1 つだけで、一度だけ消滅します
システムがリサイクルしているとき、つまりページが実行されているときに消滅するため、オフラインになります
*/
関連する推奨事項:
php コンストラクターとデストラクターの使い方を詳しく解説
以上がPHP デストラクタとリサイクル メカニズムの例の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。