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.

Mongoose quando un database diventa orientato agli oggetti anche con json, a cura di web marketing Umbria!

La miniatura inflitta da Vladimir Borisovich Tukmakov vs Yuri S Razuvaev al 50th USSR Championship (1983), Moscow URS, rd 1, Apr-03 Queen’s Indian Defense: Fianchetto. Nimzowitsch Variation (E15) finita in maniera tattica e rocambolesca con un 1-0, rientra nei sacrifici di donna, proprio oggi che é la giornata mondiale vs la violenza alle donne. Razuvaev in questa partita forse ha abbandonato il suo proverbiale senso del pericolo, evidenzia web marketing Umbria, per andare a caccia grossa di donne altisonanti, desiderio che Tukmakov ha assecondato, perché l’attività trasmessa dalla assurda vitalità dei pezzi minori del bianco rientra nella categoria iniziativa da far subire a tutti i costi e che fa ottenere risultati e veloci miniature, in questo caso in 27 mosse. Liquidata la parte strategica dei contenuti del post da parte di web marketing Umbria passiamo ad approfondire la complessità dei moduli front end per l’aspirante sviluppatore web con le righe di comando, node e mongo, tutti framework che ci consentiranno di costruire interessanti applicazioni. Per entrare subito nel vivo degli argomenti iniziamo a smanettare su https://nodejs.org/it/ dove dalla pagina principale arriviamo a https://www.npmjs.com/package/mongoose e per avere i riferimento rispetto a installazione e uso di MONGOOSE andiamo su http://mongoosejs.com/. Come al solito l’installazione avviene in maniera semplice con il comando $ npm install mongoose. Su UmbriawayVendita siamo entrati in quello che era il modulo MongoDB ma in questo caso abbiamo deciso di utilizzare un’ altro modulo dopo averlo scaricato che si chiama per l’appunto MONGOOSE che come database ha la particolarità di essere orientato agli oggetti. Con JS coinvolto anche nelle logiche asincrone di XML in Mongoose viene introdotto un nuovo tema, quella della PROMESSA che non é un film anche divertente da vedere ma una promessa per l’appunto che nel corso della giornata andrò a completare tutti i miei compiti, che essi siano di passare in edicola piuttosto che andare al cinema per vedere l’ultima versione di Blade Runner. La metafora in carne ed ossa si sposa con quelle che sono le logiche di Mongoose nel senso che nelle attività asincrone abbiamo la certezza che prima o poi quel compito verrà eseguito senza incappare in un blocco sincrono che non fa andare avanti se va incontro a qualsiasi inghippo. Web marketing Umbria fa notare che NODE di suo é sincrono nel senso che tu dai un comando e lui lo esegue mentre Mongoose é asincrono nel senso che le chiamate prima o poi verranno elaborate ed eseguite. In MongoDB avevamo visto che il collegamento avveniva tramite DRIVER o API per eseguire le diverse funzioni da esercitare. Mongoose segue logiche diverse, consente di istanziare i suoi oggetti utilizzando semplici funzioni JS. In particolare la connessione é il primo problema da risolvere e dopo ci ritroveremo subito a definire lo SCHEMA che non é altro una dichiarazione di intenti in cui il programma delinea una struttura e un tipo dei dati su campi come autore o editore o titolo assegnando i soliti stringa o intero o booleano a seconda delle necessità.

Una volta che abbiamo lo schema con web marketing Umbria andremo ad eseguire le nostre funzioni con il MODELLO che istanzia e rende operative le nostre necessità con comandi CRUD che conosciamo in lettura, scrittura, aggiornamento, cancellazione dei dati. Ne deriva pertanto il fahe lo Schemas che é una sorta di indice strutturato deve sempre precedere il Models. Le parole chiave sono quelle usate anche sol pacchetto MongoDB quindi ci ritorveremo a che fare con PROMESSE intrise di metori remove, find (posso cercare un elemento o più elementi o anche per ID), delete e update. E siamo giunti alla conclusione di questo breve excursus con web marketing Umbria e quindi è doveroso fare una sintesi di quello che é stato prodotto a livello di post su uno dei tanti portali di Umbriaway Consulting. Abbiamo visto come installare NODE, affrontato la questione dell’ integrazione dei moduli con NPM, sappiamo inizializzare le nostre applicazioni con il comando node app.js, sappiamo come includere file JSON nei nostri progetti con il comando NPM INIT, abbiamo imparato come connetterci a MongoDB e Mongoose e come gestire i dati in modalità CRUD, create, leggere, aggiornare, cancellare dati. Abbiamo utilizzato due ottimi tools come Nodemon e Robomongo. A questo punto ci manca la parte migliore che risponderà alla domanda ma come faccio a organizzare una applicazione completa con tutti questi elementi? Prima di alzare l’asticella segnaliamo che la grafica inclusa da web marketing Umbria nel post é royalty free presa dall’ ottimo sito https://unsplash.com. Stay tuned adesso viene il bello!

Blog su WordPress.com.

Su ↑