Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Discussione: [php5oop] destruct

  1. #1

    [php5oop] destruct

    ciao, domandilla scusate se vi assillo, ormai sono un cliente convinto di questo forum

    esattamente, quando viene distrutto un oggetto? alla fine di tutta una pagina oppure subito dopo che è stato utilizzato l'ultimo riferimento nello script relativo all'oggetto che si deve distruggere?

  2. #2
    Utente di HTML.it L'avatar di kuarl
    Registrato dal
    Oct 2001
    Messaggi
    1,093
    bella domanda

    su php non ho letto niente... facendo il paragone con java l'oggetto verrebbe distrutto non appena si perde l'ultimo riferimento ad esso, ma potrebbe anche essere diverso in php, non escludo che possa essere fatto alla fine dell'esecuzione della pagina.

    In altre parole non ne ho la più pallida idea

    Cmq non è che cambi molto sapere quando verrà distrutto l'oggetto :master:

  3. #3
    Originariamente inviato da kuarl
    facendo il paragone con java l'oggetto verrebbe distrutto non appena si perde l'ultimo riferimento ad esso
    anche in PHP5 come credo sia normale che sia


    Originariamente inviato da kuarl
    Cmq non è che cambi molto sapere quando verrà distrutto l'oggetto :master:
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  4. #4
    Utente di HTML.it L'avatar di kuarl
    Registrato dal
    Oct 2001
    Messaggi
    1,093
    Originariamente inviato da andr3a
    anche in PHP5 come credo sia normale che sia



    non è tanto normale sai, questo meccanismo prevede la presenza di una garbage collection per le variabili che controlla ad intervalli regolari la referenziazione di tutte le variabili allocate... non so' se pyton ha una cosa simile ma ad es. il C++ non ce l'ha, fu introdotta proprio da java

  5. #5
    Utente di HTML.it L'avatar di xPilux
    Registrato dal
    Jul 2004
    Messaggi
    103
    Su zend.com c'è scritto:
    "...When the last reference to an object is destroyed the object's destructor, which is a class method named __destruct() that receives no parameters, is called before the object is freed from memory..."

    www.zend.com/manual/migration5.oop.php

    Quindi l'oggetto verrebbe distrutto non appena si perde l'ultimo riferimento ad esso!

  6. #6
    Originariamente inviato da kuarl
    non è tanto normale sai, questo meccanismo prevede la presenza di una garbage collection per le variabili che controlla ad intervalli regolari la referenziazione di tutte le variabili allocate... non so' se pyton ha una cosa simile ma ad es. il C++ non ce l'ha, fu introdotta proprio da java
    il C++ lascialo a pixer


    Python roxa e credo abbia lo stesso metodo per la garbage, lo stesso di PHP5
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  7. #7
    ma siete sicuri?
    codice:
    <?
    class forum {
    public $asd = "ciao";
      function display(){
        echo ($this->asd . "
    ");
       }
       function __destruct() {
       unset($this->asd);
       echo "io vengo distrutto qui";
       }
    }
    
    $gigio = new forum;
    $gigio->display();
    $gigio->display();
    $gigio->display();$gigio->display();
    
    $gigio->display();
    $gigio->display();
    $gigio->display();
    echo "qui ho finito l'ultimo riferimento a gigio, eppure il destruct me lo scrive dopo
    ";
    
    ?>

  8. #8
    codice:
    class Forum {
    	private $asd = "ciao";
    	function display(){
    		echo( $this->asd . "
    " );
       	}
    	function __destruct() {
    		echo "io vengo distrutto qui<hr />";
    	}
    }
    
    $gigio = &new Forum();
    $gigio->display();
    $gigio = "asd"; // $gigio come Forum non ha piu' riferimenti
    echo "qui ho finito l'ultimo riferimento a gigio, eppure il destruct me lo scrive dopo
    ";


    ciao
    io vengo distrutto qui
    ___________________________
    qui ho finito l'ultimo riferimento a gigio, eppure il destruct me lo scrive dopo
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  9. #9
    $gigio = "asd"; ? :master:

  10. #10
    Originariamente inviato da wesborland
    $gigio = "asd"; ? :master:
    $gigio puo' essere riassegnato, unsettato o modificato, non essendo piu' l' oggetto Forum e perdendo quindi ogni riferimento a questo ...

    ... per riferimento si intende riferimento e non utilizzo dello stesso ... se non usi piu' $gigio, in stack avrai comunque una variabile di nome $gigio con riferimento in heap ad un oggetto Forum, se distruggi l' oggetto Forum o meglio ancora il suo riferimento, per l' appunto $gigio, questo utilizzera' __destruct prima di essere messo in garbage per la rimozione dalla memoria ... va meglio ora ?
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

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.