Vivere pericolosamente con le classi PHP, terza puntata

web developer Umbria

Riprendiamo il lavoro svolto in https://umbriawaypotenzia.wordpress.com/2020/04/20/imparare-le-classi-in-php-in-cinque-minuti-seconda-puntata/ appoggiandoci a http://phptester.net/. Ora cerchiamo di modellare meglio la nostra classe dopo le nostre valutazioni iniziale. Abbiamo visto che dentro la definizione di una classe lavorano alacremente tutti i metodi e le tecniche tradizionali del procedurale, per cui adesso cerchiamo di organizzare meglio il nostro codice. Vogliamo introdurre l’idea di funzione e quindi di metodo. Perchè stampare singolarmente tutte le singole proprietà, quando potrei mettere in piedi un metodo che mi consente di agire simultaneamente con una funzione di ritorno a video? Nel corpo della mia classe inserirò quindi una funzione dettagli(); riformuliamo la classe gm in questo modo sempre tra i tag di inizio e fine file php:

class gm
{
public $nome;
public $cognome;
public $eta;
public $recapitoTel1;
public $recapitoTel2;
public $email;

function dettagli()
{
return “$this->nome $this->cognome di anni $this->eta per contattare telefonicamente usare $this->recapitoTel1 o $this->recapitoTel1 oppure via mail all’ indirizzo $this->email”;
}

}

$gm=new gm();
$gm->nome=”Fabiano”;
$gm->cognome=”Caruana”;
$gm->eta=27;
$gm->recapitoTel1=”334-1234589″;
$gm->recapitoTel2=”331-1534787″;
$gm->email=”fabcar@gmail.com”;

echo $gm->dettagli();
echo “<br><br>”;
var_dump($gm);

la funzione dettagli mi ritorna automaticamente tutti i valori di stampa. Tecnicamente la gestione dei numeri telefonici sarebbe più precisa usando un array ma qui lo scopo é familiarizzare sulle funzioni. A video vedrò quindi da http://phptester.net/ : la funzione dettagli () che lavora magnificamente e la stampa sul tipo di dati della classe gm:

Fabiano Caruana di anni 27 per contattare telefonicamente usare 334-1234589 o 334-1234589 oppure via mail all’ indirizzo fabcar@gmail.com

object(gm)#1 (6) { [“nome”]=> string(7) “Fabiano” [“cognome”]=> string(7) “Caruana” [“eta”]=> int(27) [“recapitoTel1”]=> string(11) “334-1234589” [“recapitoTel2”]=> string(11) “331-1534787” [“email”]=> string(16) “fabcar@gmail.com” }

A questo punto siccome ci piace vivere pericolosamente cosa accadrebbe se volessi immettere dall’ esterno questi dati? Sarebbe possibile? Certo abbiamo detto che le funzioni hanno dei nomi, dei valori di ingresso e dei valori di ritorno quindi vediamo di modificare il codice precedente:

class gm
{
public $nome;
public $cognome;
public $eta;
public $recapitoTel1;
public $recapitoTel2;
public $email;

function dettagli()
{
return “$this->nome $this->cognome di anni $this->eta per contattare telefonicamente usare $this->recapitoTel1 o $this->recapitoTel1 oppure via mail all’ indirizzo $this->email”;
}

function inizializza($nome, $cognome, $eta, $recapitoTel1, $email)
{
echo $this->nome=$nome;
echo “<br>”;
echo $this->cognome=$cognome;
echo “<br>”;
echo $this->eta=$eta;
echo “<br>”;
echo $this->recapitoTel1=$recapitoTel1;
echo “<br>”;
echo $this->email=$email;
}

}

$gm=new gm();
$gm->nome=”Fabiano”;
$gm->cognome=”Caruana”;
$gm->eta=27;
$gm->recapitoTel1=”334-1234589″;
$gm->email=”fabcar@gmail.com”;

$gm->inizializza(“Peter”, “Svidler”, 59, “334-8368239”, “petsvi@gmail.com”);
echo “<br><br>”;
var_dump($gm);

Che cosa è successo in questo script? L’utente aveva inizializzato una serie di proprietà per il GM Fabiano Caruana, poi si é accorto che aveva bisogno di altri dati da stampare a video quindi ha semplicemente richiamato un metodo echo,  che  consentisse inserendo i parametri giusti, di stampare a video tutti i suoi dati e tutto questo è stato reso possibile grazie all’ uso della funzione inizializza che  consente quindi di vedere la card del giocatore. In questo caso ci siamo dimenticati di inserire la proprietà elo ma essendo un esperimento didattico possiamo approfondire i nostri script in una fase successiva, ad esempio nessuno ci impedisce di migliorare anche usando una grafica appropriata grazie ai CSS!

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