Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    20

    Chiarimento su __destruct()

    Ciao a tutti.

    Mi potreste chiarire l'utilizzo di tale metodo?

    Non ho ben capito se quando lo si implementa nella classe bisogna scriverci codice all'interno della sua funzione oppure basta implementarlo senza scriverci niente dentro e quando lo si invoca lui automaticamente provvede
    a distruggere l'istanza.

    Grazie mille!!!

    gp
    ln -s /dev/brain /dev/null

  2. #2
    Utente di HTML.it L'avatar di Gunn
    Registrato dal
    Feb 2006
    Messaggi
    370
    destruct si esegue automaticamente al termine dello script, oppure quando viene distrutto un oggetto (con unset())
    Codice PHP:
    <?php
    $distruggilo 
    TRUE// prova a cambiare con false

    class Classe
    {
    function 
    __destruct()
    {
        echo 
    "[b]DISTRUTTO QUI[/b]";
    }
    }

    $pippo = new Classe();
    if(
    $distruggilo)
    unset(
    $pippo);

    echo 
    " <- distrutto su richiesta || distrutto automaticamente al termine dello script -->";
    ?>
    -10 points to SCLERO high top class [definition of SCLERO HIGH TOP CLASS: 90 random kills]

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    20
    Fammi vedere se ho capito.
    Se non lo dichiaro, al termine dello script viene richiamato automaticamente (tipo Garbage Collector di Java) mentre mi basta dichiarare __destruct() all'interno della mia classe senza necessariamente scriverci niente all'interno della sua funzione per effettuare manualmente tramite unset() la distruzione dell'istanza della classe?

    gp
    ln -s /dev/brain /dev/null

  4. #4
    Utente di HTML.it L'avatar di Gunn
    Registrato dal
    Feb 2006
    Messaggi
    370
    no

    __destruct() non serve a distruggere un'istanza
    l'stanza la distruggi dall'esterno con unset()

    __destruct è il metodo predefinito che si esegue automaticamente quando si distrugge un'istanza

    un esempio classico è mysql
    Codice PHP:
    class Database
    {
    private 
    $resource;

    function 
    __construct()
    {
    $this->resource mysql_connect();
    }

    function 
    __destruct()
    {
    mysql_close($this->resource);
    }

    quando fai unset(Database $istanza);
    chiudi automaticamente mysql
    -10 points to SCLERO high top class [definition of SCLERO HIGH TOP CLASS: 90 random kills]

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    20
    Sperando di avere capito. Dichiaro ed implemento il metodo __destruct e poi tramite uset() che lo richiamerà automaticamente distruggo l'istanza. Esatto?

    gp
    ln -s /dev/brain /dev/null

  6. #6
    Utente di HTML.it L'avatar di Gunn
    Registrato dal
    Feb 2006
    Messaggi
    370
    no

    quando fai unset($istanza) (dall'esterno della classe eh!)
    già hai distrutto l'istanza...

    dichiarando __destruct, dichiari una serie di operazioni da fare quando un'istanza è distrutta
    -10 points to SCLERO high top class [definition of SCLERO HIGH TOP CLASS: 90 random kills]

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.