Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    Problema con un distruttore

    Sto leggendo questa pagina:
    http://php.html.it/guide/stampa_lezi...di-un-oggetto/

    Ma non capisco questo pezzo:
    Codice PHP:
    // distruzione delle istanze
    unset($myClass_1);              // stampa "__destruct method called"
    $myClass_2 0;                 // stampa "__destruct method called"

    unset($myClass_3);              // non chiama il distruttore, esiste ancora un riferimento all'oggetto $myClass_3 
    Perché io leggo sul browser:
    __destruct method called!__destruct method called! __destruct method called!

    Qualcuno mi spiega cosa significa "PHP infatti, chiama il metodo distruttore solo quando è davvero sicuro che tutti i riferimenti all'oggetto siano stati cancellati".

    Scusate ma sono un po' duro heee!

    Grazie
    Chi non crede in una cultura libera forse non
    ha mai provato un forum ma chi ha provato
    un forum e non crede in una cultura libera
    allora non é mai stato utile alla
    cultura altrui.

  2. #2
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    l'ultimo destruct viene chiamato quando lo script finisce l'esecuzione, e non durante l'unset($myClass_3);

    se capisci questo, forse capisci tutto il resto

  3. #3
    ok ho capito che era un esempio poco utile allora... se si chiude tutto e sempre... hehehe... allora cosa lo si chiude a fare...

    grazie di tutto , bellissimo questo forum! wawww... meglio che una chat!
    Chi non crede in una cultura libera forse non
    ha mai provato un forum ma chi ha provato
    un forum e non crede in una cultura libera
    allora non é mai stato utile alla
    cultura altrui.

  4. #4
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    Originariamente inviato da balestra_romani
    ok ho capito che era un esempio poco utile allora... se si chiude tutto e sempre... hehehe... allora cosa lo si chiude a fare...
    I distruttori non sono inutili, possono servire in certi scenari ben piu' complessi di un tutorial. Ad esempio potresti avere del codice che cancella un ogetto in seguito ad un determinato evento. E quel oggetto deve poter fare qualcosa prima della sua distruzione - scrivere su un database, liberare qualche risorsa, etc.

  5. #5
    capisco...

    perché questo codice invece non produce nulla?

    Codice PHP:
    <?php
    class MyClass {
    // proprietà statiche
    public static $instances 0;
    public 
    $idKey false;
    // costruttore
    public function __construct() {
    $this->idKey = ++self::$instances;
    echo 
    "This is the #" $this->idKey " instance of the class MyClass. Instances created: " $this->idKey;
    }
    // distruttore
    public function __destruct() {
    echo 
    "Instance #" $this->idKey " deleted.";
    }
    }
    ?>


    fonte:
    http://php.html.it/guide/stampa_lezi...ieta-statiche/
    Chi non crede in una cultura libera forse non
    ha mai provato un forum ma chi ha provato
    un forum e non crede in una cultura libera
    allora non é mai stato utile alla
    cultura altrui.

  6. #6
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    non produce nulla perche' non hai seguito tutto l'esempio. Hai postato solo la definizione della classe, ma non hai nessun oggetto che la richiami. Metti nel tuo codice anche le righe che creano gli oggetti

  7. #7
    Grazie mille! Che sciocco che sono, ieri ero anche molto stanco...
    Chi non crede in una cultura libera forse non
    ha mai provato un forum ma chi ha provato
    un forum e non crede in una cultura libera
    allora non é mai stato utile alla
    cultura altrui.

  8. #8
    Non riesco a capire la differenza tra metodo statico e metodo non statico.

    METODO NON STATICO

    <?php
    class MyClass {
    // metodi statici
    public function sayHello() {
    echo "Hello!";
    }
    public function sayHelloAgain() {
    $this -> sayHello();
    echo " Again!";
    }
    }
    // stampa "Hello!"
    $MyClass = new MyClass();
    $MyClass -> sayHello();
    // stampa "Hello! Again!"
    $MyClass -> sayHelloAgain();
    ?>

    METODO STATICO

    <?php
    class MyClass {
    // metodi statici
    public static function sayHello() {
    echo "Hello!";
    }
    public static function sayHelloAgain() {
    self::sayHello();
    echo " Again!";
    }
    }
    // stampa "Hello!"
    MyClass::sayHello();
    // stampa "Hello! Again!"
    MyClass::sayHelloAgain();
    ?>

    a parte la notazione...
    Chi non crede in una cultura libera forse non
    ha mai provato un forum ma chi ha provato
    un forum e non crede in una cultura libera
    allora non é mai stato utile alla
    cultura altrui.

  9. #9
    Moderatore di Windows e software L'avatar di URANIO
    Registrato dal
    Dec 1999
    residenza
    Casalpusterlengo (LO)
    Messaggi
    1,290
    Be la differenza sta nel fatto che con i metodi statici non crei un istanza della classe, ma li usi come se fossero delle normali funzioni.

    Nel primo caso hai dovuto fare una
    $MyClass = new MyClass();
    Nel secondo no.

    Sono utili quando hai una funzione propria della classe che utilizzi spesso senza bisogno dei dati della classe.

  10. #10
    be, che dire...

    grazie dinuovo!
    Chi non crede in una cultura libera forse non
    ha mai provato un forum ma chi ha provato
    un forum e non crede in una cultura libera
    allora non é mai stato utile alla
    cultura altrui.

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.