Maison >développement back-end >tutoriel php >PHP : Dans quelles circonstances la méthode destructrice __destruct est-elle exécutée ?

PHP : Dans quelles circonstances la méthode destructrice __destruct est-elle exécutée ?

黄舟
黄舟original
2017-07-02 10:36:094046parcourir

php Méthode Destructor Dans quelles circonstances la destruct est-elle exécutée ? Dans tous les cas, est-elle rencontrée ?>le caractère de fin php est également exécuté

Destructor Sera exécuté lorsque toutes les références à un certain objet sont supprimées ou lorsque l'objet est explicitement détruit

sera exécuté avant que l'objet ne soit détruit Bar ?

Selon le manuel officiel, le destructeur sera exécuté lorsque toutes les références à un objet seront supprimées ou lorsque l'objet sera explicitement détruit. La démonstration du code est la suivante

class sf{    public function destruct()
    {        echo METHOD . PHP_EOL;
    }
}


$c1 = new sf;
$c2 = $c1;echo 'unset $c2' . PHP_EOL;unset($c2);echo 'unset $c1' . PHP_EOL;unset($c1);// ----$c1 = new sf;
$c2 = $c1;echo 'null $c2' . PHP_EOL;
$c2 = null;echo 'null $c1' . PHP_EOL;
$c1 = null;// ----$c1 = new sf;
$c2 = $c1;echo '123 $c2' . PHP_EOL;
$c2 = 123;echo '456 $c1' . PHP_EOL;
$c1 = 456;echo 'the end' . PHP_EOL;

Les résultats d'exécution sont les suivants

unset $c2unset $c1
sf::destructnull $c2null $c1
sf::destruct123 $c2456 $c1
sf::destruct
the end

Le destructeur sera exécuté lorsque toutes les références à un objet sont supprimées ou lorsque l'objet est explicitement détruit .

De manière générale, php détruira la référence à la fin du script (non définie) et s'exécutera avant la fin du script.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn