この記事の内容は、PHP のデストラクターとリサイクルのメカニズムに関するもので、必要な友達に参考にしていただけるように共有します。 *
質問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 >';
// オブジェクトのリサイクル メカニズム
class Human { public $name = null; public $gender = null; public function __destruct() { echo '再见!<br >'; } }$a = new Human();$b = $c = $d = $a;unset($a);echo '<hr >';
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 つだけあり、死ぬのは 1 回だけです
システムがリサイクルしているとき、つまりページが実行されているときに消滅したため、オフラインでした
*/
// ===メモ パート 1。 ===
/ *
質問
答え: はい
2. 110.php のコードパート 4
なぜ 1 つは破棄され、2 つは空ですか?
最後のものは hr 行の下に表示されます。
システムは最終的にリサイクルされ、この時点で $d が破棄されます。
そのため、hr 行の後ろに表示されます
*/
関連する推奨事項:
PHPコンストラクターの詳しい説明
以上がPHP デストラクタとリサイクル メカニズムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。