Viverre pericolosamente con OOP in PHP, costruttori e distruttori, quarta puntata

All’ indirizzo https://umbriawayvalorizza.wordpress.com/2020/04/20/vivere-pericolosamente-con-le-classi-php-terza-puntata/ abbiamo visto come implementare METODI all’ interno di una CLASSE. A questo punto non ci resta che approfondire un importante concetto, quello del COSTRUTTORE. Prendiamo in esame questa classe:

class gm
{
public $nome;
public $cognome;
public $elo;
}

$gm=new gm();
$gm->nome=”Fabiano”;
$gm->cognome=”Caruana”;
$gm->elo=2999;

che cosa succede quando scrivo $gm=new gm(); fuori dal blocco per istanziare l’oggetto fisico figlio della classe? E’ come se ordinassi di creare qualcosa che poi alloggerà in memoria, di fatto sto costruendo dal nulla un oggetto. Ma allora se posso far nascere un oggetto posso anche inizializzare la classe con un costruttore che anzichè farmi richiamare la funzione manualmente come accadeva negli esempi presenti in https://umbriawayvalorizza.wordpress.com/2020/04/20/vivere-pericolosamente-con-le-classi-php-terza-puntata/ mi carica direttamente delle istruzioni e mi inizializza l’oggetto secondo le mie modalità?

Vediamo questo esempio aggiungendo del codice sempre in http://phptester.net/:

class gm
{
public $nome;
public $cognome;
public $elo;

function __construct($n, $c, $e)
{
echo “ORA nasce l’oggetto GM”;
$this->nome=$n;
$this->cognome=$c;
$this->eta=$e;
}
}

//qui siamo usciti dalla classe e istanziamo l’oggetto

$gm=new gm(“Michele”, “Godena”, 2500);

var_dump($gm);

qui applico il metodo costruttore function __construct che assegna i valori iniziali con le proprietà dell’ oggetto, dopodichè contrariamente a quello che succedeva negli esempi precedenti qui siamo in grado di EVOCARE le proprietà della classe semplicemente istanziando l’oggetto con la parola chiave NEW che inietta nell’ output le nostre priorità di visualizzazione in maniera del tutto automatica, senza richiamare nessun nome di funzione. A questo punto il programmatore talentuoso potrà fare la domanda “ma se esiste un metodo costruttore esiste anche un metodo distruttore?”. Certamente vediamo un esempio:

class gm
{
public $nome;
public $cognome;
public $eta;

function __construct($n, $c, $e)
{
echo “ORA nasce l’oggetto $n $c <br>”;
$this->nome=$n;
$this->cognome=$c;
$this->elo=$e;
}

function __destruct()
{
echo “*** $this->nome $this->cognome viene distrutto *** <br>”;
}

}

$gm=new gm(“Fabiano”, “Caruana”, 1987);

var_dump($gm);

La funzione costruttore accetta tre parametri in ingresso. Che cosa vedrò a video dopo aver inizializzato un nuovo oggetto che questa volta ha anche il metodo __destruct() incluso nella classe?

ORA nasce l’oggetto Fabiano Caruana
object(gm)#1 (4) { [“nome”]=> string(7) “Fabiano” [“cognome”]=> string(7) “Caruana” [“eta”]=> NULL [“elo”]=> int(1987) }
*** Fabiano Caruana viene distrutto ***

Sostanzialmente prima viene creato e inizializzato l’oggetto, poi eseguo il metodo var_dump() per vedere il tipo di dati presenti nell’ oggetto $gm dopodichè il costruttore finita la sua missione deve lasciare il posto al distruttore che non fa altro che eliminare dalla memoria l’oggetto.

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

Blog su WordPress.com.

Su ↑

%d blogger hanno fatto clic su Mi Piace per questo: