Imparare le classi in PHP in cinque minuti, seconda puntata

web developer umbria

web developer umbriaImpossibile imparare le classi in cinque minuti. Tuttavia abbiamo capito in pochi secondi anche occhieggiando a https://umbriawaydesign.wordpress.com/2020/04/20/diventa-esperto-in-cinque-minuti-con-php-e-la-programmazione-orientata-agli-oggetti/ che le classi usando una metafora divina sono frutto di un dio primordiale che è intenzionato a creare fiori, alberi, persone, animali, location e tutto quello che è creabile quindi l’intero infinito. Ma la mente umana per racchiudere una idea ha bisogno di insiemi e perimetri e luoghi chiusi quindi ecco le classi. Dentro non ci trovo una divinità ma solo una definizione di categoria fatta di metodi e proprietà. I metodi sono semplici funzioni che hanno un nome, accettano parametri in ingresso e restituiscono qualcosa. Le classi dovranno essere autonome e proteggere e gestire tutto il loro patrimonio interiore. Ecco una prima illuminazione: all’ interno delle classi trovo fattibile tutto quello che funziona nel procedurale, per cui uso di variabili per definire le proprietà, uso delle funzioni per trasformarle in metodi etc etc. Vediamo ad esempio il famoso esempio precedente riadattato per capire che le normali operazioni che svolgevamo prima non ci sono precluse. Ipotizziamo di voler fare dei confronti tra GM partecipanti a un torneo. Ossia di stampare a video dei messaggi legati all’ età dei partecipanti facendo dei confronti con delle istruzioni condizionali, quindi riadattiamo il nostro codice rispetto alle esigenze presenti in https://umbriawaydesign.wordpress.com/2020/04/20/diventa-esperto-in-cinque-minuti-con-php-e-la-programmazione-orientata-agli-oggetti/ e facciamolo diventare sempre tra i tag di apertura e chiusura di PHP:

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

$gm=new gm();
$gm->nome=”Fabiano”;
$gm->cognome=”Caruana”;
$gm->eta=27;

$altrogm=new gm();
$altrogm->nome=”Peter”;
$altrogm->cognome=”Svidler”;
$altrogm->eta=59;

if ($gm->eta > $altrogm->eta)
echo “$gm->nome maggiore di $altrogm->nome”;
elseif ($gm->eta < $altrogm->eta)
echo “$gm->nome minore di $altrogm->nome”;
else
echo “$gm->nome e $altrogm->nome sono coetanei”;

questa comparazione fa parte dei normali flussi presenti nelle istruzioni condizionali ossia si fa un confronto di età tra due partecipanti e si cerca la soluzione a una domanda che potrà avere tre risposte: nel caso reale presentato a video con http://phptester.net/ vedrò:

Fabiano minore di Peter //(risultato 1)

proviamo a livello sperimentale a dire che Peter ha 27 anni, a video vedrò

Fabiano e Peter sono coetanei //(risultato 2)

stessa verifica potrei farla invertendo le età dell’ esperimento originario per ottenere quindi:

Peter minore di Fabiano //(risultato 3)

A questo punto potrebbero sorgere dei dubbi con domande lecite: ma questi due oggetti che io ho creato, sono completamente diversi anche se hanno le stesse proprietà? Certo! Ho istanziato due oggetti che hanno due nomi diversi anche se arrivano dalla stessa idea divina platonica (ossia la classe gm) e che FISICAMENTE OCCUPANO DUE SPAZI DI MEMORIA quindi DIVERSI. Alla domanda: ma se io volessi personalizzare l’oggetto lo posso fare? Proviamo in pratica, cioè voglio che nel caso di Caruana mi servisse un numero di telefono come recapito, mentre nel caso di Svidler voglio vedere solo una mail di contatto, lo posso fare ? Vediamo nella pratica modificando il codice e vedendo il risultato come di consueto in http://phptester.net/

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

$gm=new gm();
$gm->nome=”Fabiano”;
$gm->cognome=”Caruana”;
$gm->eta=27;
$gm->cellulare=”334 – 1234589″;

$altrogm=new gm();
$altrogm->nome=”Peter”;
$altrogm->cognome=”Svidler”;
$altrogm->eta=59;
$altrogm->email=”svid.pet@gmail.com”;

printf(” $gm->nome $gm->cognome ha come cellulare il numero $gm->cellulare”);
printf(“<br>”) ;
printf(“$altrogm->nome $altrogm->cognome ha $altrogm->email”);

a video vedrei se non ho commesso errori legati alla sintassi con i punti e virgola e se ho scritto bene il nome delle proprietà (ad esempio si veda cosa succeda se al posto di email richiamassi mail) questo risultato:

Fabiano Caruana ha come cellulare il numero 334 – 1234589
Peter Svidler ha svid.pet@gmail.com

ok, da questi esempi se ne deduce che quello che facevamo prima in precuderali qui si può fare comunque. Ipotizziamo adesso di dover inserire un secondo numero di cellulare di Caruana come faccio? Bene allora all’ interno della classe GM vado a definire dunque un array con: public $recapitiTel=array(); e poi inserirò i valori variegati nell’ oggetto istanziato di riferimento. Il tutto diventa quindi:

class gm
{
public $nome;
public $cognome;
public $eta;
public $recapitiTel=array();
}

$gm=new gm();
$gm->nome=”Fabiano”;
$gm->cognome=”Caruana”;
$gm->eta=27;
$gm->recapitiTel[0]=”3341234589″;
$gm->recapitiTel[1]=”3311534787″;

$altrogm=new gm();
$altrogm->nome=”Peter”;
$altrogm->cognome=”Svidler”;
$altrogm->eta=59;
$altrogm->email=”svid.pet@gmail.com”;

var_dump($gm);
printf(“<br><hr>”);
printf(“$gm->nome $gm->cognome ha %d recapiti telefonici”,
count($gm->recapitiTel));

il risultato a video dopo aver impostato il var_dump sarà il seguente:

object(gm)#1 (4) { [“nome”]=> string(7) “Fabiano” [“cognome”]=> string(7) “Caruana” [“eta”]=> int(27) [“recapitiTel”]=> array(2) { [0]=> string(10) “3341234589” [1]=> string(10) “3311534787” } }
________________________________________________________
Fabiano Caruana ha 2 recapiti telefonici

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...

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