24. Comunicazione tra server: il mondo delle API

Andrea Pastore 27/09/2020 0

Nel mondo informatico è frequente la necessità di parlarsi tra sistemi diversi. Supponiamo ad esempio che due server della stessa azienda devono scambiarsi informazioni sugli utenti: per fare questa cosa bisognerà prevedere lo sviluppo di file appositi che si connetteranno all’altro server e comunicheranno queste informazioni. Ogni server deve avere anche dei file predisposti per ricevere queste informazioni. Questi file prendono il nome di API. Mentre altri file sul server si occuperanno ad esempio di mostrare i siti o fare altri processi, le API saranno sempre in ascolto ricevere informazioni da uno o più server esterni.

Comunicazione tra server: l’esigenza di una lingua comune

I server possono avere diverse tecnologie, ma questo non deve essere un ostacolo alla comunicazione. Sono state inventate diversi sistemi di interscambio di dati, i più comuni sono il JSON e l’XML.

JSON

JSON sta per JavaScript Object Notation ed è il formato di scambio dei dati più diffuso oggi. Un oggetto JSON inizia e termina con una parentesi graffa, gli elementi al suo interno vengono rappresentati mettendo il nome dell’elemento seguito dai due punti e poi dal valore. Il nome dell’elemento sarà messo tra virgolette, il valore sarà messo tra virgolette solo se è una stringa. Ad esempio:

“nome”:”Mario”

oppure nel caso di un valore numerico:

“età”:5

Nota: dopo ogni elemento (tranne l’ultimo) è necessario mettere una virgola.

Vediamo un esempio di oggetto JSON che contengono le informazioni di una persona:

{
“nome”:”Mario”,
“cognome”:”Rossi”,
“età”:5,
“email”:”mariorossi@virgilio.it”
}

Array in JSON

Il JSON ha la possibilità di raccogliere elementi dello stesso tipo in un array, proprio come la maggior parte dei linguaggi di programmazione. Proprio come nei principali linguaggi di programmazione l’array si crea con le parentesi quadre e al suo interno vanno inseriti gli elementi separati da una virgola. Supponiamo ad esempio di dover rappresentare in JSON un oggetto regione, contenente nome, popolazione, pil e una lista delle principali città. Il campo principali città può essere un array con vari elementi all’interno:

	“principaliCitta”:[“Città 1”,“città 2”];

Un array può contenere anche oggetti. Pensando all’esempio di prima, supponiamo di voler rappresentare le città in maniera più accurata, indicando per ognuna nome, numero di abitanti e la provincia. L’esempio diventerebbe cosi:

	“principaliCitta”:[

{

“nome”:”Firenze”,

“abitanti”:300000,

“provincia”:”FI”

},{

“nome”:”Prato”,

“abitanti”:15000,

“provincia”:”FI”

}],

Esistono dei siti che consentono di validare il JSON scritto, ad esempio:

https://jsonformatter.curiousconcept.com/

Manipolare oggetti JSON con PHP

PHP mette a disposizione delle funzioni che consentono creare e decodificare oggetti in formato JSON: si tratta delle funzioni json_encode e json_decode.

json_encode

Per creare oggetti JSON usiamo la funzione json_encode() che prende in input un array e restituisce un oggetto JSON. Tipicamente useremo questa funzione abbinata alla funzione echo, perché dopo aver creato l’oggetto JSON vorremmo stamparlo. Vediamo un esempio:

           $utente = [

                "nome"       => "Mario",

                "cognome" => "Rossi",

                "email"       => "mariorossi@gmail.com"

           ];

          echo json_encode($utente);

i moderni browser possono formattare i dati JSON, basta indicare nell'header di pagina che si tratta di dati di questo tipo. Questo si fa con il seguente comando:

          header('Content-Type: application/json');

json_decode

La funzione json_decode() serve per decodificare i dati JSON: prende in input una stringa e restituisce l'oggetto a cui possiamo accedere  allo stesso modo in cui accediamo alle proprietà di una classe con variabili pubbliche. Vediamo un esempio:

          $jsonTxt = '{

                                "nome" : "Mario",

                                "cognome" : "Rossi",

                                "email" : "mariorossi@gmail.com"

                            }';

        $jsonObj  = json_decode($jsonTxt);

        // recupero le informazioni

        $nome       = $jsonObj->nome;

        $cognome = $jsonObj->cognome;

        echo "$nome $cognome";

SOAP

Il protocollo SOAP consente di scambiare informazioni tra componenti software utilizzando come fonte di scambio documenti scritti in XML (un metalinguaggio per la definizione di linguaggi di markup, come ad esempio HTML, ideato per consentire agli utenti di creare documenti con markup personalizzati). Era il protocollo di scambio standard prima dell’avvento del JSON, ma conserva una fetta non trascurabile di utilizzo. 

Il file WSDL

Ogni web server ha un file WSDL che contiene la descrizione della sua interfaccia: i parametri necessari ad eseguire le varie operazioni, i messaggi di risposta e cosi via.

La classe SoapClient

PHP mette a disposizione la classe SoapClient per comunicare con i web server SOAP.

Il costruttore di questo dato prende in input un indirizzo web dove è specificato il file WSDL con le opzioni del web server.

         $wsdl  = “linkwsdldelserver.wsdl";

         $soap = new SoapClient($wsdl);

Il metodo doRequest è quello che si occupa di eseguire la richiesta. Restituisce il responso del server, che dobbiamo mettere in una variabile:

         $responso = $soap->__doRequest($wsdl, $location, $action, $version);

Nota: la risposta viene fornita nel formato stdObject, quindi per accedere ai dati dovremmo comportarci come quando recuperiamo i dati di un oggetto, ad esempio:

	echo	$responso->elemento
Potrebbero interessarti anche...

Andrea Pastore 19/03/2020

1. Programmare in PHP

Il PHP è un linguaggio di scripting utilizzato principalmente per creare siti web e web application. È molto popolare perché i principali strumenti per creare siti web (WordPress, Joomla!, Drupal e molti altri) sono fatti in PHP.

Hello world

È tradizione iniziare a programmare scrivendo un programma che stampa a video la scritta “Hello world!”. Per fare questo in PHP dobbiamo scrivere:




<?php

     echo “Hello wordl!”;


Il tag <?php

Il codice PHP viene scritto in file con estensione “.php” e deve essere preceduto dal tag <?php. L’interprete PHP esegue il codice contenuto tra questo tag e il tag di chiusura ?> . Supponiamo di avere questo codice:

<html>

<head></head>

<body>

<?php

echo “Hello world!”;

?>

</body>

</html>


Quando l’interprete PHP analizzerà questo file si concentrerà solo sulla parola contenuta tra i tag <?php e ?>. Il codice echo “Hello world!”; verrà eseguito e al suo posto verrà scritto “Hello world!”.

 Vediamo ora un altro esempio di un file che contiene solo codice PHP: in questo caso il tag di chiusura non è necessario, in quanto non sono presenti tag HTML.



<?php

echo “Hello world!”;

Cosa succede quando carichiamo una pagina in PHP

PHP è un linguaggio interpretato, significa che quando un utente visita una pagina il server la elaborerà in quel momento. L’elaborazione avviene con un programma apposito, l’interprete PHP. Vediamo quali sono i passaggi che avvengono quando viene richiesta una pagina web:

Commenti in PHP

I commenti sono degli appunti che possiamo voler scrivere quando creiamo un programma. Quando scriviamo un programma ci ricordiamo quello che stiamo facendo, ma sarà difficile che ci ricorderemo qualcosa di un programma scritto un anno fa. Possiamo commentare in due modi diversi:


// questo è un commento su singola riga

/*

  * questo è un commento su più righe

* viene usato quando dobbiamo commentare una funzione, un algoritmo ecc.

*/

Il testo contenuto all’interno dei commenti viene ignorato da PHP, se proviamo a scrivere lo stesso testo dei commenti senza il simbolo del commento otterremo un errore, perché PHP scambierà quel testo per comandi che deve eseguire e ci avviserà che ci sono errori nel codice.

Installiamo il nostro IDE

Un IDE (integrated desktop environment) è un software che, in fase di programmazione, aiuta i programmatori nello sviluppo del codice sorgente di un programma.  Spesso l'IDE aiuta lo sviluppatore segnalando errori di sintassi del codice direttamente in fase di scrittura, oltre a tutta una serie di strumenti e funzionalità di supporto alla fase di sviluppo e debugging.

Il nostro IDE di riferimento: NetBeans

NetBeans è uno dei migliori editor gratuiti per il PHP: è in grado di evidenziare la sintassi, suggerire il codice, trovare errori di sintassi e altro ancora. Nella schermata sottostante abbiamo cominciato a scrivere il comando PHP echo, e vediamo che NetBeans ci sta indicando la sintassi in un riquadro immediatamente sotto alla riga dove stiamo scrivendo. Ci sta anche segnalando che quello che abbiamo scritto noi (ovvero solo la parola echo) non è corretto, evidenziandola in rosso.

Vantaggi di un IDE

Un IDE presenta una serie di vantaggi, come ad esempio la possibilità di consultare versioni precedenti dello stesso file (notate che in alto c’è un tasto Source che mostra il codice che scriviamo, subito a destra c’è il tasto History che consente di vedere versioni precedenti del file). Altra cosa importante sono l’auto completamento (ovvero la capacità del software di capire quale funzione o variabile dobbiamo usare) e le scorciatoie di tastiera: ad esempio:

alt + shift + canc + freccia su oppure freccia giù

consente di portare la riga selezionata sopra o sotto, a seconda della freccia selezionata

Installiamo XAMPP

XAMPP è un server locale, ovvero uno strumento che consente di simulare sui nostri computer domestici uno spazio web. I server locali sono molto utilizzati dagli sviluppatori, perché danno la possibilità di testare i progetti in locale e di trasferirli poi comodamente sui server di destinazione una volta pronti.

Al suo interno contiene PHP, MySQL e phpMyAdmin e consente con un solo click di creare un server con tutto quello che ci serve per eseguire applicazioni PHP e MySQL. XAMPP si può installare su Linux, Windows e Mac OS X con un file di installazione scaricabile dal sito ufficiale https://www.apachefriends.org. Il sito è disponibile in molte lingue, tra cui l’italiano, e oltre a darci la possibilità di scaricare XAMPP contiene le risposte alle domande più comuni fatte dagli utenti, divise per sistema operativo.

Una volta installato possiamo avere dei siti che stanno solo sul nostro computer, accedendo all’indirizzo “localhost/nomecartella” (dove “nomecartella” può essere sostituito da un nome a piacimento). Le cartelle vanno create nella cartella htdocs che si trova all’interno della directory principale di XAMPP: su Windows il percorso è solitamente

C://XAMPP/htdox

sulle principali distribuzioni Linux invece il percorso di questa cartella è:

opt/lampp/htdocs

Creiamo un nuovo progetto PHP con NetBeans

Come primo passo creiamo all’interno della cartella htdocs di XAMPP creiamo la cartella principale del nostro progetto, ad esempio: “progetto1”.

Dopo aver aperto NetBeans clicchiamo su file e poi su new project, si aprirà la schermata che ci consente di scegliere quale tipo di progetto creare. Noi sceglieremo PHP Application with Existing Sources. Vedere la figura sotto

fatto questo clicchiamo su next e scegliamo la cartella base del progetto, che è quella che abbiamo creato prima (progetto1):

da questo momento in poi tutti i file e le cartelle che creeremo su NetBeans verranno inserite in quella cartella e potranno essere testate digitando l’indirizzo localhost/progetto1/nomeFile.php

 

Leggi tutto

Andrea Pastore 27/09/2020

11. Gli array in PHP

Spesso quando programmiamo ci troviamo a memorizzare un gran numero di variabili, e sarebbe scomodo memorizzarle ognuna in una variabile.

Si pensi per esempio ai nomi di una classe di 20 bambini: creare una variabile per ognuno sarebbe scomodo. Esiste un sistema migliore messo a disposizione dalla maggior parte dei linguaggi di programmazione, compreso il PHP: gli array.

Un array è una variabile speciale in grado di contenere al suo interno più elementi, accessibili con un indice. Questo tipo di variabili prendono il nome di strutture dati. Ogni linguaggio ne ha diversi tipi di strutture dati, l'array è una delle più comuni nonché la prima che incontriamo nel nostro percorso formativo.

Gli array in PHP si possono dichiarare in due modi: con la funzione array() oppure scrivendo il loro contenuto all'interno di []. Vediamo un paio di esempi:         

	// uso array()

        $nomi  = array("Andrea","Luca","Antonio");

// uso il comando []

        $nomi2 = ["Pippo","Pluto","Paperino"];

Stampare gli elementi di un array

Per stampare un elemento specifico usiamo la funzione echo del negozio tra le parentesi quadre il numero dell'elemento da stampare (ricordiamo che si inizia a contare da 0).

	echo $nomi[0];  // mettendo come indice 0 accediamo alla prima posizione

Per stampare tutti gli elementi usiamo un ciclo for:

        for($i=0;$i<count($nomi);$i++) {

            echo $nomi[$i];

        }

Aggiungere elementi ad un array

Oltre ad inserire gli elementi nel momento della creazione possiamo aggiungere in qualsiasi momento altri elementi al nostro array. Per farlo possiamo usare la funzione array_push oppure scrivere il numero di elemento che vogliamo creare. Vediamo degli esempi, supponiamo di voler inserire il nome Giovanni nell’array dichiarato sopra:

	// uso la funzione array_push

array_push($nomi,”Giovanni”);

// dichiaro direttamente una nuova posizione nell’array

$nomi[3] = “Giovanni”;

Nota: nel primo caso l’elemento verrà aggiunto alla fine dell’array, nel secondo invece siamo noi a stabilire la posizione. Se quella posizione non è presente viene creata, altrimenti il valore precedente viene sovrascritto

Rimuovere gli elementi di un array

Per rimuovere un elemento dall’array possiamo usare la funzione unset, ad esempio:

	unset($nomi[i]);

Contare gli elementi in un array

Per sapere il numero di elementi di un array possiamo usare la funzione count(). Ad esempio se volessimo sapere la dimensione dell’array $nomi creato prima potremmo scrivere:

	$numeroElementi = count($nomi);

Gli array associativi

Gli array associativi sono array che hanno come indici delle parole al posto dei numeri. Sono molto utilizzati in PHP per la loro flessibilità.

Per creare un array associativo possiamo usare anche qui la funzione array o i simboli [], ma al loro interno dobbiamo inserire delle coppie nome => valore, vediamo un esempio:

    $arrAssociativo = array(

                            "uno"=>"primo elemento",

                            "due"=>"secondo elemento",

                            "tre"=>"terzo elemento"

                        );

Vediamo la parola uno seguita dalla freccia e poi dal valore effettivo di quella posizione dell’array, poi dopo la virgola vengono inseriti gli altri elementi uno dopo l'altro.

Stampare un elemento di un array associativo

Con gli array associativi non possiamo usare gli indici numerici, ma dobbiamo usare l’indice inserito a sinistra del simbolo “=>”. Ad esempio

il codice:

	echo $arrAssociativo["uno"];	

stamperà il primo elemento dell’array.

Iterare un array associativo

Dato che l'array associativo non possiede gli indici numerici per scorrere tutti gli elementi non possiamo usare il classico ciclo for, ma dobbiamo usare un nuovo costrutto: il foreach.

Questo costrutto itera gli elementi di un array e ad ogni iterazione inserisce il valore corrente all'interno della variabile passata dopo as. Vediamo un esempio:

        foreach($arrAssociativo as $nome) {

            echo "
  • Utente $nome
";

        }      

Con il foreach possiamo recuperare il valore dell'elemento ma anche la chiave, ad esempio se scriviamo:

        foreach($arrAssociativo as $chiave=>$valore) {

            echo "
  • $chiave $valore
";

        }

otterremo la stampa sia delle chiavi che del valore associato.

Funzioni per gli array

PHP mette a disposizione molte funzioni per operare sugli array, vediamo le principali:

 Nome funzione  Utilità
 explode Prende in input una stringa da suddividere in più parti e una stringa che deve essere usata come elemento divisore. Restitusice un array contenente le varie parti della stringa.

Esempio di utilizzo:
explode(“ ”,”I love php”)
 implode() Consente di inserire tutti gli elementi di un array in una stringa (gli elementi devono essere anch’essi di tipo stringa). Il primo parametro è il carattere da inserire tra un elemento e un altro

Esempio di utilizzo:
implode(" ",$arr)
 in_array Restituisce true se l’elemento da cercare è presente nell’array passato in input.

Esempio di utilizzo:
in_array($nomi,”Giovanni”)
 array_merge() Unisce uno o più array

Esempio di utilizzo:
in_array($nomi,”Giovanni”)
 print_r Stampa informazioni sull’oggetto passato in input, se è un tipo di dato elementare (stringa o numerico) stampa direttamente l’elemento, nel caso di un array stampa il suo contenuto

Esempio di utilizzo:
print_r($arr);
Leggi tutto

Andrea Pastore 27/09/2020

17. Gestire le date con PHP

PHP mette a disposizione la funzione date per creare le date. Ad esempio per creare la data di oggi dovremmo scrivere:

$data = date(“d/m/Y”);

la funzione date prende come argomento il tipo di formattazione desiderato, ad esempio il codice scritto sopra genererà una data formato italiano, ovvero gg/mm/aaaa. Se avessimo voluto creare una data col formato inglese, avremmo dovuto scrivere:

$data = date(“Y-m-d”);

potrebbe anche capitarci di dover stampare solo l’anno, in questo caso scriveremo:

$data = date(“Y”);

La stessa funzione consente di stampare anche l’ora, scrivendo:

$data = date(“H:i:s”);

la lettera H indica che vogliamo stampare l’ora in formato 24h, mentre la lettera i indica i minuti. La lettera s indica i secondi. Come per la data, possiamo scrivere solo l’ora, solo i minuti o solo i secondi, ma possiamo anche scrivere tutto insieme, ad esempio:

$data = date(“d/m/Y H:i:s”);

Modificare il formato di una data

Capita frequentemente di dover modificare la data, ad esempio perché dobbiamo inserirla nel database e MySQL salva le date nel formato inglese, ovvero aaaa-mm-gg. Per convertire una stringa usiamo nuovamente la funzione date, alla quale però aggiungiamo un altro parametro, che è la conversione della data in millisecondi. Questa operazione si fa con strtotime. Vediamo questo esempio:

	$dataBase = “2015-01-01”;

echo date("d/m/Y", strtotime($dataBase));

Abbiamo passato in input a date un secondo parametro in cui con la funzione strtotime trasformiamo la stringa $dataBase in millisecondi, e poi abbiamo chiesto alla funzione date di formattarla diversamente, nel formato italiano. Il risultato di questa funzione verrà stampato dalla funzione echo. l’output del codice scritto qui sopra è:

	2015-01-01

Tabella con le opzioni della funzione date

Stampa l’anno in formato AAAA 
 y Stampa l’anno in formato AA
 m Stampa il mese informato numerico
 M Stampa il mese in formato testuale (solo le prime tre lettere)
 d Stampa il giorno in formato numerico
 D Stampa il nome del giorno (solo le prime tre lettere)
 H Stampa l’ora in formato 24h
 h Stampa l’ora in formato 12h
 i Stampa i minuti
 s Stampa i secondi
$data = date(“d/m/Y”);

la funzione date prende come argomento il tipo di formattazione desiderato, ad esempio il codice scritto sopra genererà una data formato italiano, ovvero gg/mm/aaaa. Se avessimo voluto creare una data col formato inglese, avremmo dovuto scrivere:

$data = date(“Y/m/d”);
Leggi tutto

Cerca...