25. Composer
Andrea Pastore 27/09/2020 0
Composer è un gestore di pacchetti per PHP. È nato nel 2015 e da allora si è imposto come lo standard per la gestione delle dipendenze.
Scaricare Composer
Per scaricare Composer visitare il sito https://getcomposer.org/ e a seconda del sistema operativo che avete avrete una diversa procedura di installazione.
Il file composer.json
Il file composer.json contiene tutte le dipendenze per gestire il nostro progetto. Quando dobbiamo utilizzare una libreria esterna ci basterà inserirla in questo file e automaticamente Composer la scaricherà per noi.
Esempio di composer.json :
{
"require": {
"monolog/monolog": "dev- master#2eb0c0978d290a1c45346a1955188929cb4e5db7",
"acme/foo": "1.0.x-dev#abc123"
},
"autoload": {
"psr-4": {
"Monolog\\": "src/",
"Vendor\\Namespace\\": ""
}
}
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
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
Y | 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”);
Andrea Pastore 27/09/2020
24. Comunicazione tra server: il mondo delle API
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