19. La programmazione a oggetti

Andrea Pastore 27/09/2020 0

Finora abbiamo programmato in modo procedurale, ovvero le istruzioni che abbiamo scritto venivano eseguite una dopo l’altra. Questo sistema di programmazione non è molto efficiente, perché i codici diventano molto grandi e difficilmente manutenibili. La programmazione ad oggetti è nata per risolvere questo problema. Si basa su due principi fondamentali: le classi e gli oggetti. Una classe è un file che definisce un tipo di dato, nonché le operazioni che possono essere effettuate dagli oggetti di quella classe. Sarà possibile poi creare oggetti di quel tipo di dato che possono eseguire le operazioni stabilite.

Caratteristiche programmazione ad oggetti

Le variabili di classe

Una classe può avere variabili proprie, che spesso sono accessibili solo a lei (approfondiremo questa cosa tra poche righe, quando parleremo dell’incapsulamento).  Le variabili di una classe si dichiarano in alto, subito dopo la dichiarazione della classe.

I metodi

I metodi sono delle funzioni che possono essere invocate solo sugli oggetti della classe. Mantengono le stesse proprietà delle funzioni, ma sono applicate solo all’istanza della classe su cui vengono eseguite.

Il costruttore

Il costruttore è un metodo speciale che consente di creare un’istanza dell’oggetto. Viene creato con il metodo __construct, che può prendere in input dei parametri ed inizializzare il nostro oggetto con i loro valori. Il costruttore viene posizionato di solito sotto le variabili di classe.

Incapsulamento

Nelle classi abbiamo la possibilità di scegliere, oltre al tipo di variabile, anche il livello di accesso, tra questi tre valori:

  • public
    se dichiariamo una variabile public questa sarà accessibile anche all’esterno della classe, qualunque parte di un programma potrà leggere quei valori.
  • private
    Se invece la dichiariamo private questi valori potranno essere letti solo all’interno della classe.   
  • protected
    è una via di mezzo: consente la lettura di questa variabile alle classi che estendono la classe che stiamo scrivendo. Vedi il paragrafo successivo sull’ereditarietà.

Nota: in PHP se non scriviamo uno specificatore di accesso i metodi sono public, ovvero possono essere invocati da chiunque.

la regola è quella di dichiarare le variabili private e poi utilizzare dei metodi per restituire o modificare dei valori.

La nostra prima classe in PHP

Creiamo ora la nostra prima classe in PHP. Supponiamo di voler creare una classe che rappresenti un libro, e memorizzare titolo, autore e genere. Il codice di questa classe sarà:

<?php

class Libro {

    private $titolo;

    private $autore;

    private $genere;

    /*

     * Il costruttore in PHP viene creato con il metodo __construct,

     * che può prendere in input dei parametri ed inizializzare il

     * nostro oggetto con i loro valori

     */

    function __construct($titolo, $autore, $genere) {

        $this->titolo = $titolo;

        $this->autore = $autore;

        $this->genere = $genere;

    }

    // getter & setter

    function getTitolo() {

        return $this->titolo;

    }

    function getAutore() {

        return $this->autore;

    }

    function getGenere() {

        return $this->genere;

    }

    function setTitolo($titolo): void {

        $this->titolo = $titolo;

    }

    function setAutore($autore): void {

        $this->autore = $autore;

    }

    function setGenere($genere): void {

        $this->genere = $genere;

    }

}
Potrebbero interessarti anche...

Andrea Pastore 27/09/2020

14. PHP e MySQL

PHP mette a disposizione una serie di strumenti per collegarsi ai più noti database. Essendo utilizzato soprattutto in ambito web PHP è sempre associato al database MySQL, per il quale mette a disposizione la classe mysqli. Vediamo come funziona

Creazione dell’oggetto database

	  $db = new mysqli($host, $utenteDb, $passwordDb, $nomeDb);

            if (mysqli_connect_errno()) {

                echo "Errore durante la connessione al Database: ".mysqli_connect_error();

                exit();

            }

Specificare una porta diversa dalla porta di default

Potrebbe capitarci di lavorare in aziende con requisiti stringenti di sicurezza, che ad esempio hanno cambiato la porta di default a cui il server MySQL è in ascolto. È possibile specificarla, scrivendo:

	$db = new mysqli($host, $utenteDb, $passwordDb, $nomeDb,$portaMysql);

Esecuzione di una query

	if(!$risQuery = $db->query($query)) {
                    echo "Errore durante l'esecuzione della query: ".$db->error;
                    echo "<br>$query";
                exit();
          }

Recuperare i dati della query

Per recuperare i dati della query usiamo la funzione fetch_assoc invocata sull’oggetto $risQuery. Questa funzione restituirà un array associativo che potremmo poi utilizzare per stampare i dati che ci interessano, usando come indici i nomi dei campi del database.

	$oggetto = $risQuery→fetch_assoc();

supponendo che la tabella su cui abbiamo eseguito la query abbia i campi id e nome, dopo aver eseguito il codice qui sopra potremmo scrivere:

	echo $oggetto[“id”].” ”.$oggetto[“nome”];

Se la query ha restituito più di un risultato dobbiamo creare un ciclo per recuperarla:

	while($oggetto=$result->fetch_assoc()) {

// elaboro le singole righe

echo $oggetto[“id”].” ”.$oggetto[“nome”].”
”;  

}

Nota: nel ciclo while abbiamo aggiunto un tag
dopo la stampa, in modo che ad ogni riga del database corrisponda una riga diversa a video.

Conoscere il numero di elementi restituiti dalla query

Può capitare di dover conoscere il numero di elementi restituiti da una query. Questa operazione si può fare controllando la proprietà num_rows dell’oggetto restituito:

	$numeroRighe =  $result->num_rows;
Leggi tutto

Andrea Pastore 26/09/2020

8. Iterazioni

Il costrutto for

Quando programmiamo ci può capitare di dover ripetere più volte la stessa operazione, ad esempio si prenda in esame il seguente codice:

echo “Utente  1”

echo “Utente  2”

echo “Utente  3”

echo “Utente  4”

echo “Utente  5”

questa è un’operazione ripetitiva: stiamo scrivendo sempre la stessa cosa, cambia solo il numero finale. Per questo genere di operazioni possiamo utilizzare un costrutto che ci viene messo a disposizione dal PHP: il costruttor for. Lo stesso codice lo possiamo scrivere in questo modo:

for($i = 1; $i<6;$i++) {

echo “Utente $i”;

}

Analizziamo meglio il ciclo for: dopo la parola chiave for ci sono delle parentesi tonde che contengono i parametri necessari alla sua esecuzione, separati dal simbolo “;”:

  • variabile contatore e il suo valore iniziale, nell’esempio sopra rappresentato dalla stringa: $i = 0
  • valore limite della variabile contatore, nell’esempio sopra è $i<6
  • quantità da incrementare ad ogni iterazione, nell’esempio $i++ che è una scorciatoia offerta dal PHP per indicare che la variabile deve essere incrementata di 1. Invece di scrivere $i = $i +1 possiamo scrivere $i++.

Il ciclo while

Il ciclo while è un altro strumento per eseguire operazioni ripetitive, si differenzia dal ciclo for per il numero minore di variabili prese in input. Vediamo un esempio del ciclo while:

while($i<10) {

echo “Utente $i”;

$i++;

}

a differenza del ciclo for il while prende in input una sola condizione, ed esegue il codice contenuto tra le sue parentesi graffe fino a quando questa condizione è vera. La condizione del ciclo while può essere fatta con tutti gli operatori utilizzati all’interno dell’if (vedere la tabella di riferimento nel capitolo precedente).

Leggi tutto

Andrea Pastore 26/09/2020

3. Le variabili in PHP

Una variabile è una locazione di memoria in cui è memorizzato un valore. Ad ogni variabile assegniamo un nome che ci servirà per richiamarla. Quando vogliamo usare una variabile, ad esempio scrivendo questo codice:

echo $var1;

PHP recupererà il valore associato a quella variabile in memoria, per fare l’elaborazione che abbiamo richiesto. Nell’esempio qui sopra stiamo chiedendo a PHP di stampare la variabile $var1, quindi il PHP recupererà il valore di questa variabile e poi eseguirà la stampa.

In PHP le variabili iniziano con il simbolo $ seguito da almeno una lettera. Quando creiamo una variabile dobbiamo assegnarle un valore iniziale, questa operazione si chiama assegnamento. Vediamo alcuni esempi:

$nome = “Mario”;  // creiamo una variabile di tipo stringa

$anni  = 10; // creiamo una variabile di tipo numerico

/*

 * stiamo creando una variabile di tipo booleano, ovvero un tipo di

 * variabile che può avere solo due valori: true e false. Più avanti capiremo meglio

 */

$flag   = true;

PHP consente di creare anche variabili più complesse che non contengono solo un valore ma più informazioni, approfondiremo questo discorso più avanti.

Operazioni aritmetiche con le variabili

Vediamo alcune operazioni di base che possiamo fare con le variabili in PHP:

Addizione

$somma = 10 + 20;

Possiamo anche effettuare una somma con delle variabili già esistenti:

$num1 = 10;

$num2 = 20;

$totale = $num1 + $num2;

Sottrazione

analogamente all’addizione possiamo eseguire le sottrazioni

$risultato = 100 - 20;

Anche qui possiamo effettuare una sottrazione con delle variabili già esistenti:

$num1 = 100;

$num2 = 20;

$totale = $num1 - $num2;

Moltiplicazione

stesso discorso per le moltiplicazioni:

$risultato = 5 * 10;

Anche qui possiamo effettuare una sottrazione con delle variabili già esistenti:

$num1 = 10;

$num2 = 2;

$totale = $num1 * $num2;

Divisione

stesso discorso per le moltiplicazioni:

$risultato = 50 / 10;

Anche qui possiamo effettuare una divisione con delle variabili già esistenti:

$num1 = 10;

$num2 = 2;

$totale = $num1 / $num2;

Ci sono dei casi in cui siamo interessati a sapere solo il resto della divisione, magari per capire se il numero è pari o dispari. In questo caso scriveremo cosi:

$resto = $num1 % $num2;

Supponiamo ad esempio di scrivere:

$resto = 5 % 2;

dopo l’operazione la variabile $resto conterrà il valore 1, perché 5/2 = 2 con resto di 1

I simboli +, -, *, / e % sono operatori aritmetici. I nomi dei primi 4 simboli sono scontati, il simbolo % è noto come operatore modulo. PHP mette a disposizione altri operatori, tra cui:

Operatore Azione svolta
+= è una scorciatoia per incrementare una variabile di una certa quantità equivale a scrivere: $totale = $totale + 10;
-= è una scorciatoia per sottrarre a una variabile una certa quantità equivale a scrivere: $totale = $totale - 10;
*= è una scorciatoia per moltiplicare una variabile per un numero equivale a scrivere: $totale = $totale * 10;

Concatenare variabili

Supponiamo di avere queste 2 variabili PHP di tipo stringa:

	$var1 = “Ciao”;

$var2 = “Mondo”;

possiamo ottenere una stringa unica unendo le variabili, con l’operatore concatenazione, che è definito con il simbolo “.” :

	$var 3 = $var1.$var2

Se provassimo a stampare $var3 otterremo la scritta “CiaoMondo”, senza alcuno spazio. Anche gli spazi infatti sono stringhe, se vogliamo inserirli dobbiamo inserirli nella concatenazione:

	$var 3 = $var1.” ”.$var2

In quest’ultimo esempio abbiamo usato l’operatore “.” due volte: la prima per aggiungere uno spazio, la seconda per aggiungere il contenuto di $var2.

Possiamo effettuare anche la concatenazione con dei numeri, ad esempio:

	$var1 = “Matricola”;

$var2 = 1200;

Se scrviamo il seguente codice:

	$var 3 = $var1.” ”.$var2

la variabile 3 avrà valore “Matricola 1200”

Le costanti

PHP consente di definire delle costanti, ovvero delle speciali variabili che, una volta assegnato il valore, non lo cambiano più. Per dichiarare una costante dobbiamo usare il simbolo _ e non il simbolo $ che utilizziamo quando usiamo le variabili. Ad esempio:

	_NOME 		= “Mario”;

_COGNOME = “Rossi”;

con questo codice abbiamo definito due costanti, che possono essere richiamate nel resto del codice del programma. Ad esempio:

	echo NOME;

echo COGNOME;
Leggi tutto

Cerca...