La destruction de variables ou d'objets PHP peut être divisée en destruction explicite et destruction implicite :
1. La destruction explicite, lorsque l'objet n'est pas référencé sera être détruit, afin que nous puissions le supprimer ou lui attribuer NULL
2. Destruction implicite, PHP est un langage de script, lorsque la dernière ligne de code est exécutée, toute la mémoire appliquée doit être détruite. être libéré ;
Parmi les deux méthodes de destruction ci-dessus, nous pouvons résumer trois méthodes de destruction : c'est-à-dire
1. 🎜>2. $varname=null
3. Destructeur __destruct()
Par exemple :
class Human { public $name = '张三'; public $gender = null; public function __destruct() { echo '死了!<br />'; } } $a = new Human(); $b = $c = $d = $a; unset($a); $d=null; echo '<hr />'; var_dump($a); echo '<hr />'; var_dump($b); echo '<hr />'; var_dump($c); echo '<hr />'; var_dump($d); 结果如下: Notice: Undefined variable: a in /Library/WebServer/Documents/test.php on line 42 NULL object(Human)#1 (2) { ["name"]=> string(6) "张三" ["gender"]=> NULL } object(Human)#1 (2) { ["name"]=> string(6) "张三" ["gender"]=> NULL } NULL 死了!
<?php $a = 1; $b = &$a; unset($a); var_dump($a); var_dump($b);
Le résultat est :
Notice: Undefined variable: a in E:\amp\apache\htdocs\index.php on line 5 NULL int(1)
2. $varname=null, le nom de la variable existe toujours, mais la valeur mémoire est supprimée. Alors qu’en est-il dans le cas du passage par référence ? Exemple :
<?php $a = 1; $b = &$a; $a=null; var_dump($a); var_dump($b);
输出的结果是: NULL NULL
3. Comme le montre l'exemple ci-dessus, le destructeur __destruct() n'est démarré que lorsque PHP exécute le dernier morceau de code, mais cette compréhension n'est pas assez précise. Par exemple
.<?php class Human{ public $name = '开始'; public function __destruct(){ echo '结束'; }} $a = new Human; echo $a->name; unset($a); //销毁函数 $a = new Human; echo '***********************'; 输出的结果是: 开始结束***************************结束
La conclusion est donc la suivante : s'il n'y a pas de destruction manuelle, une fois l'exécution du code terminée, le système exécutera automatiquement le destructeur __destruct() lorsque la mémoire est libérée. Si l'objet est détruit, il sera exécuté automatiquement.
Tutoriel recommandé : Tutoriel vidéo PHP
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!