Che cos’è il PHP? Tutorial per principianti

Il PHP è un linguaggio di scripting open source, eseguito lato server, che viene utilizzato principalmente per la creazione di siti dinamici. Originariamente era l’abbreviazione per “Personal Home Page Tools”, mentre oggi l’acronimo è usato per indicare “PHP: Hypertext Preprocessor” (tradotto in italiano: preprocessore di ipertesti).

Mentre i linguaggi lato client come HTML, CSS o JavaScript vengono interpretati prima dal browser quando si apre una pagina, il codice PHP viene già eseguito sul web server, dove gli script PHP generano delle istruzioni HTML, che vengono infine trasmesse al browser. Quest’ultimo non riceve il codice vero e proprio (lo script PHP), ma semplicemente il risultato dello script eseguito.

Il campo di applicazione principale del PHP risiede nella programmazione lato server. In primo piano ci sono pagine dinamiche e app; altri settori di utilizzo sono la compilazione di applicazioni desktop e la programmazione dalla riga di comando. Il PHP offre una varietà di funzioni impressionante, pur disponendo di una sintassi user-friendly per i principianti. Il linguaggio di scripting si contraddistingue per un ampio supporto di database, può venir utilizzato su qualsiasi piattaforma ed è disponibile con una licenza PHP speciale, che consente di utilizzare e modificare liberamente il codice sorgente: in sintesi, una combinazione vincente.

Si basano sul linguaggio PHP quattro dei più diffusi CMS, ovvero WordPress, TYPO3, Joomla e Drupal. Secondo un’analisi di mercato di W3Techs, l’82,3 % di tutte le pagine nel World Wide Web utilizza al momento questo linguaggio di scripting (aggiornato al 19 aprile 2017). Così risulta che il PHP è il linguaggio di programmazione lato server più amato nell’ambito dello sviluppo web e questo rappresenta senz’altro un motivo in più per cimentarsi con le opzioni offerte da questo.

Questo tutorial PHP si indirizza prima di tutto ai principianti e offre un approfondimento sulla programmazione lato server. Tuttavia, alcuni esempi presuppongono delle conoscenze di base nello sviluppo web. Inoltre dovreste già avere dimestichezza con il linguaggio di markup HTML.

Imparate velocemente il linguaggio PHP, apprendendo dagli esempi introdotti in questo tutorial, mettendoli in pratica sul vostro computer e adattandoli alle esigenze del vostro progetto web. Tutto quello di cui avete bisogno per la programmazione lato server in PHP, è un web server comprensivo di interprete PHP, un editor di testo (come Notepad++ o Vim) e un browser. Come server vi consigliamo per iniziare l’ambiente di test locale XAMPP, messo a disposizione da Apache Friends per i sistemi operativi Windows, Linux e macOS.

Consiglio

Con l'Hosting PHP di IONOS potete beneficiare delle migliori feature dell'ultima versione di PHP. Se avete domande, il vostro consulente personale è sempre a disposizione.

Installare il PHP

Per poter eseguire gli script PHP avete bisogno prima di tutto di un web server, che è in grado di interpretare il linguaggio di scripting. In più deve essere aggiunto un interprete PHP. Si tratta in questo caso di un componente del software che riesce ad identificare i passaggi all’interno di un file che contengono il codice PHP. In linea di massima il PHP viene supportato da tutti i server web classici, mentre l’interprete è compreso nel pacchetto di download PHP. La versione attuale si trova sul sito del progetto php.net, pronta per essere scaricata gratuitamente.

Solitamente l’interprete PHP viene integrato tramite un modulo server o come FastCGI; si sconsiglia però di utilizzare l’interprete come programma CGI perché ne conseguirebbe una diminuzione della performance. Solitamente il PHP viene utilizzato spesso in combinazione con Apache HTTP Server. Se questa connessione viene ampliata con un sistema di database MySQL o MariaDB, a seconda del sistema operativo si parla di LAMP (Linux), WAMP (Windows) o MAMP (macOS).

Gli stack per il web di questo tipo sono già disponibili come pacchetti software preconfigurati. Per imparare ad usare il linguaggio PHP, vi consigliamo il pacchetto completo XAMPP, che consiste di un’installazione locale del web server Apache comprensivo del sistema di database MariaDB e dei linguaggi di scripting Perl e PHP. Una guida dettagliata all’installazione la trovate nel nostro tutorial su XAMPP su IONOS Digital Guide.

Consiglio

XAMPP è semplicemente un server di test. Il pacchetto software offre la possibilità agli sviluppatori web di allestire in breve tempo un ambiente di test completo per script, pagine HTML e fogli di stile, ma non viene garantito un funzionamento sicuro su Internet e per questo XAMPP dovrebbe venir utilizzato esclusivamente in locale. Ciò significa che i servizi XAMPP non dovrebbero essere raggiungibili da Internet.

Nozioni di base del PHP: la sintassi del linguaggio di scripting

Una volta che avete configurato il vostro web server locale (ad esempio con XAMPP), dovreste testare se il PHP è stato installato correttamente e se sia pronto ad eseguire gli script.

Fatto

Uno script è per lo più un piccolo programma del computer che non viene compilato prima nel codice binario. Gli script vengono scritti in un linguaggio di programmazione come PHP, Perl o JavaScript e a seconda del tipo, eseguiti da un interprete sul web server (lato server) o da un engine nel browser (lato client).

Aprite il vostro editor di testo preferito e inserite lo script PHP seguente:

<?php
phpinfo();
?>

Gli script PHP sono sempre costruiti secondo lo stessa schema. Il tag PHP di apertura <?php segnala che viene avviato un ambiente di script. Dopo segue il codice PHP vero e proprio sotto forma di istruzioni. Nell’esempio viene caricata sul browser la funzione phpinfo(). La maggior parte delle funzioni richiede uno o più parametri inseriti tra parentesi tonde; nel phpinfo() sono opzionali: phpinfo( INFO_ALL ). Ogni istruzione termina con un punto e virgola (;). Per chiudere l’ambiente di script, si utilizza il tag PHP di chiusura: ?>.

Fatto

Le funzioni sono dei sottoprogrammi che consentono di immagazzinare parti di codice del programma. Per evitare la ridondanza, si possono definire una volta sola con una funzione i compiti ricorrenti e richiamarli infine grazie al nome della funzione. Gli sviluppatori web utilizzano per questo funzioni PHP predefinite o creano dei propri sottoprogrammi.

Salvate il file di testo con il nome test in formato .php (script PHP) e avviate il vostro server web. A patto che utilizziate l’ambiente di test XAMPP, salvate il file test.php nella cartella di XAMPP su htdocs (C:\xampp\htdocs).

Il file di esempio si può richiamare ora all’URL seguente: http:// localhost/ test.php. Utilizzate un altro web server o una configurazione personalizzata del software XAMPP e scegliete l’URL in base al corrispettivo percorso del file.

Consiglio

Mentre negli indirizzi Internet lo slash (/) viene utilizzato come separatore, Windows Explorer usa un backslash (\), ma i browser moderni sostituiscono solitamente un backslash nella barra del browser automaticamente in uno slash.

Digitando l’URL http://localhost/test.php, indicate al vostro browser di richiedere il file test.php dal web server. Il server Apache, o qualsiasi altro web server che avete deciso di utilizzare, richiama il file nella cartella corrispondente. L’estensione .php annuncia che il file contiene il codice PHP. Ora si attiva l’interprete PHP presente nel web server, che analizza il documento e si imbatte nel tag PHP di apertura <?php, che dichiara a sua volta l’inizio del codice PHP. L’interprete riesce ad eseguire il codice PHP e a generare un’istruzione HTML, che viene consegnata dal web server al browser.

Se il PHP è stato installato correttamente, visualizzate la pagina seguente come risultato dell’esecuzione dello script:

Con la funzione phpinfo() si utilizza l’abbreviazione del valore standard phpinfo( INFO_ALL ), che dà informazioni più dettagliate sulla configurazione PHP del vostro web server. Se non si riesce a trovare alcuna versione PHP, comparirà un messaggio di errore sul browser o verrà consegnato il codice PHP al browser, senza che venga interpretato.

“Hello World!”: generare un testo con la funzione echo

Se il PHP è stato installato senza errori, è giunto il momento di scrivere il vostro primo script. Per questo si presta l’istruzione echo. A differenza del phpinfo(),echo non rappresenta alcuna funzione, ma si tratta piuttosto di una costruzione linguistica, che consente di emettere la stringa seguente come testo.

Fatto

I costrutti linguistici sono direttive che vengono utilizzate nel PHP per controllare il processo del programma. Tra questi costrutti linguistici rientrano oltre a echo, anche le istruzioni if, for, do, include, return, exit o die. Perciò in questo caso non servono le parentesi, diversamente da quanto accade per le funzioni.

Create per il vostro script un nuovo file PHP e scrivete al suo interno il seguente codice:

<?php
echo 'Hello World!';
?>

Il tag di apertura <?php avvia un ambiente di script. Segue il costrutto linguistico echo e la stringa Hello World! racchiusa tra le virgolette ad un apice. Con il tag ?> terminate lo script. Fate attenzione ad inserire il punto e virgola dopo la direttiva. Al posto di Hello World! può essere utilizzato qualsiasi altro testo.

Fatto

Con stringa in informatica si indica una sequenza di caratteri di lunghezza variabile, cioè una serie di lettere, cifre e caratteri speciali. Nella programmazione le stringhe vengono considerate come un tipo autonomo di dati e delimitati dagli altri tipi di dati come integers (numeri interi) o floats (numeri in virgola mobile).

Salvate lo script su hello.php nella cartella htdocs sul vostro web server e aprite il file inserendo l’URL http://localhost/hello.php nel browser. Se il codice non è stato trasmesso nel modo corretto, la finestra del browser dovrebbe mostrare ora la sequenza di caratteri utilizzata da voi:

Ogni testo che generate con echo può venir contrassegnato, se necessario, con tag HTML che vengono interpretati dal browser insieme alla corrispondente specificazione HTML. Ora provate a farlo voi, ad esempio creando lo script seguente:

<?php
echo '<h1>Hello World!</h1>
<p>This is my first PHP page.</p>';
?>

Aperto sul browser, il risultato dell’esecuzione dello script si presenta nel modo seguente.

La sequenza di caratteri Hello World racchiusa tra tag <h1> viene interpretata dal browser come titolo principale. Seguono un ritorno a capo automatico e l’indicazione del paragrafo del testo <p>.

A seconda di quanto necessario, si può utilizzare echo sia con virgolette ad un apice (') o a due apici ("). Se volete solo generare dei testi, rimane indifferente il tipo di virgolette per cui optate. Ma ciò cambia, non appena entrano in gioco le variabili.

Le variabili

Il costrutto linguistico echo ha in serbo molto di più che la semplice emissione di testo che si può anche mettere in atto in modo ottimale senza PHP, ma solo basandosi sull’HTML. Il valore aggiuntivo reale di echo prende le mosse dal fatto che l’istruzione consente di generare testi in modo dinamico con l’aiuto di variabili.

Gli utenti che ricorrono al PHP possono imbattersi, ad esempio, in variabili dalla forma seguente:

$esempio         

Ogni variabile è composta da un segno del dollaro ($) seguito dal nome della variabile. Le variabili vengono utilizzate negli script PHP per integrare i dati esterni nelle pagine web. In questo caso può trattarsi di valori di diverso tipo, a partire da numeri semplici, passando per sequenze di caratteri fino ad arrivare a testi interi o strutture di documenti HTML.

Il PHP distingue sette tipi di variabili:

Tipo di variabile Descrizione
String Una stringa è una sequenza di caratteri: in questo caso si tratta di una parola, di una frase, di un testo o di un codice HTML completo di una pagina web.
Integer Un integer è un numero intero senza decimali. Può essere positivo o negativo.
Float Un float è un numero in virgola mobile, quindi un valore decimale. Nei linguaggi di programmazione la virgola viene annotata come punto (.). Il PHP supporta fino ad un massimo di 14 valori dopo la virgola.
Boolean Le variabili booleane sono il risultato di un’operazione logica e conoscono solo due valori: TRUE (vero) e FALSE (falso). Questo tipo di variabili viene impiegato quando lavorate con le condizioni.
Array Un array è una variabile che può comprendere più elementi. Si tratta così di un raggruppamento di più dati strutturati allo stesso livello, che sono stati riassunti in un array.
Object Il tipo di variabile object consente ai programmatori di definire dei propri tipi di dati. Trova applicazione nella programmazione orientata agli oggetti. In questo tutorial PHP per principianti vengono escluse le variabili object.
NULL Il valore NULL rappresenta una variabile senza valore. Per le variabili del tipo NULL questo è l’unico valore possibile.

La gestione centrale dei contenuti avviene generalmente grazie a sistemi di database. I valori per le variabili si possono anche definire direttamente nello script. Questo tipo di ordinamento avviene secondo lo schema seguente:

$esempio = "valore";

Al simbolo caratteristico del dollaro segue il nome della variabile (in questo caso esempio), che viene collegato con il segno dell’uguale (=) con un valore racchiuso tra le virgolette a due apici.

Consiglio

I valori per le variabili dei tipi integer e float vengono annotati senza virgolette (ad esempio $esempio= 24 o $esempio = 2.7;)

Il PHP vi offre la libertà di dare un nome alle variabili a vostra discrezione. Vi sono però le seguenti limitazioni:

  • Ogni variabile comincia con il simbolo del dollaro.
  • Il nome della variabile è costituito da una sequenza qualsiasi composta da lettere, cifre e trattini (ad esempio $esempio_1).
  • Un nome di variabile valido comincia sempre con una lettera o un trattino ($esempio1 o $_esempio), mai con un numero (errato: $1esempio).
  • Il linguaggio PHP è case-sensitive, vale a dire che il linguaggio di scripting opera una distinzione tra maiuscolo e minuscolo ($esempio ≠ $Esempio).
  • Il nome della variabile non deve contenere alcuno spazio o ritorno a capo (errato: $esempio 1)
  • Le sequenze, riservate per altri scopi dal PHP, non possono venir utilizzate come variabili personalizzate dall’utente (ad esempio $this).

Approfondiamo meglio con un esempio:

<?php
$author = "John Doe";
echo "<h1>Hello World!</h1> 
<p>This dynamic web page was created by $author.</p>";
?>

Al tag PHP di apertura segue la definizione della variabile: per $author deve essere utilizzato il valore John Doe. Eseguendo lo script, la variabile $author verrà così sostituita dal valore John Doe ad ogni comparsa all’interno dell’ambiente di script. L’immagine seguente mostra come appare nel browser.

Se è presente un errore e la pagina web non è stata affatto creata da John Doe, ma dal suo collega tedesco Max Mustermann, per risolvere il problema, basterà solo adattare la variabile con il nome $author.

Ciò è efficiente soprattutto se una variabile ricompare più volte all’interno di uno script. Una correzione dovrebbe semplicemente venir apportata un’unica volta in questo caso, cioè laddove viene definito il valore della variabile.

Qui emerge la forza del PHP: i contenuti si possono integrare come variabili. Questa funzione rappresenta il fondamento dello sviluppo web dinamico; al contrario delle pagine web statiche, che sono già presenti come pagine HTML pronte all’uso, le pagine dinamiche vengono generate solo al momento dell’apertura della pagina. Così l’interprete PHP carica i singoli elementi della pagina richiesta con l’aiuto di variabili provenienti dai diversi database e li ricompone in una pagina HTML adattata in modo personalizzato su richiesta.

I vantaggi di questo concept di design sono ben riconoscibili: se gli elementi del sito (ad esempio quelli nel footer) vengono rielaborati, gli adattamenti non devono venir apportati manualmente su ogni singola sottopagina del sito web, invece basta aggiornare i relativi record nel database. Così la rielaborazione viene automaticamente applicata su tutte le pagine web che integrano i rispettivi dati come variabili.

Se una variabile viene definita più volte all’interno di uno script, la nuova definizione sovrascrive la precedente. Un elemento echo successivo dà come risultato sempre lo stesso valore attuale di una variabile.

<?php
$author = "John Doe";
echo "<h1>Hello World!</h1> 
<p>This dynamic web page was created by $author.</p>";
$author = "Mario Rossi ";
echo " <p>Supported by $author.</p>";
?>

Nel codice di esempio per la variabile $author viene assegnato prima il valore John Doe e poi viene sostituito con il valore Max Mustermann.

Tornando al tema delle virgolette, va specificato che, diversamente dalle stringhe, le singole variabili non hanno bisogno di essere messe tra virgolette:

<?php
$author = "John Doe";
echo $author;
?>

Questo vale a meno che la variabile non debba essere utilizzata all’interno di una stringa: in questo caso, infatti, lavorate con le virgolette a due apici ("), che segnalano all’interprete PHP che deve cercare la stringa in base alle variabili da sostituire rispettivamente con i valori collegati. Le sequenze di caratteri, che sono racchiuse tra virgolette a un apice ('), vengono interpretate come semplici informazioni testuali e riprodotte, anche quando si tratta di variabili. Ora provate voi:

<?php
$author = "John Doe";
echo '<h1>Hello World!</h1> 
<p>This dynamic web page was created by $author.</p>';
?>

Forse ora vi starete chiedendo cosa succeda nel caso in cui omettiate le virgolette. In questo caso il PHP vi rimanda ad un errore sintattico.

Messaggi di errore e mascheratura

Se si verificano degli errori sintattici, il codice PHP inserito non è corretto e l’interprete PHP dà un messaggio di errore. C’è da aspettarsi un errore simile, se si utilizza la direttiva echo con una stringa senza virgolette:

<?php
echo Hello World!;
?>

I messaggi di errore comprendono nella maggior parte dei casi indicazioni su dove si è verificato un errore e forniscono così informazioni importanti per riuscire a risolverli.

Nell’esempio preso in considerazione si presume che ci sia un errore nella riga 2 del nostro codice di programmazione, proprio là dove non abbiamo inserito le virgolette a scopo dimostrativo.

Si verificano anche errori sintattici se volete emettere dei caratteri come testo, che sono collegati nel PHP con un preciso compito. Un esempio sarebbero le virgolette ('). I caratteri come questi si possono solo emettere nel codice PHP come testo, se rendete comprensibile all’interprete che il carattere è esonerato dallo svolgere la sua tipica funzione. Nel caso di virgolette a un apice avete a disposizione due possibilità: potete racchiudere una stringa con virgolette a un apice in virgolette a due apici o mascherare le virgolette anteponendo un backslash (\):

<?php
echo '\'Hello World!\' ';
?>

Sarebbe ugualmente possibile la combinazione di virgolette a uno e due apici:

<?php
echo " 'Hello World!' ";
?>

Ma non una variante simile: ci:

<?php
echo ' 'Hello World!' ';
?>

In questo caso, negli esempi sono stati aggiunti gli spazi tra le virgolette per scopi di leggibilità.

Operatori di stringa

Se voleste emettere contemporaneamente più variabili all’interno di uno script PHP, potreste farlo nel modo appreso fin qui:

<?php
$author1 = "John Doe";
$author2 = "Max Mustermann";
echo "<h1>Hello World!</h1> 
<p>This dynamic web page was created by $author1 and $author2.</p>";
?>

Scrivete semplicemente entrambe le variabili insieme al resto del testo che deve essere emesso nella stringa racchiusa nelle virgolette a due apici. Il PHP riconosce le variabili automaticamente in base al simbolo del dollaro ($) e utilizza i valori corrispondenti.

Tra i programmatori un procedimento simile viene considerato come un lavoro non pulito. È quasi un dogma il fatto che le variabili non debbano fare parte della stringa, questo perché diversi linguaggi di programmazione impongono una separazione simile. Ma è più importante che anche il PHP richieda la divisione tra stringa e variabile, quando si lavora con funzioni o variabili più complesse. Perciò si consiglia di applicare questa separazione conseguentemente anche nella generazione di un testo semplice, anche se non sarebbe strettamente necessario in questo caso.

Lavorando con variabili, abbiamo così a che fare con più elementi, che devono essere concatenati tra di loro nell’emissione. Nel PHP si utilizza quindi l’operatore di stringa (.).

Riprendendo l’esempio introdotto sopra, per essere programmato in modo “pulito”, il codice dovrebbe essere scritto così:

<?php
$author1 = "John Doe";
$author2 = "Max Mustermann";
echo '<h1>Hello World!</h1> 
<p>This dynamic web page was created by ' . $author1 . ' and ' . $author2 . '.</p>';
?>

Quindi qui abbiamo a che fare con tre stringhe e due variabili che devono essere concatenate in una sequenza.

Stringa1   Variabile1   Stringa2   Variabile2   Stringa3
'<h1>Hello World!</h1> <p>This dynamic web page was created by ' . $author1 . ' and ' . $author2 . '.</p>'

È da notare che un operatore di stringa unisce insieme stringhe o variabili senza spazi. Se si desidera inserire uno spazio, lo si deve annotare, come nell’esempio, nella stringa all’interno di virgolette.

I programmatori non solo utilizzano gli operatori di stringa per collegare stringhe e variabili per l’emissione del testo, ma anche per prolungare delle variabili. L’esempio seguente mostra come funziona:

<?php
$esempio = 'Hello ';
$esempio .= 'World';
echo $esempio;
?>

Per prolungare il valore di una variabile, definitelo nuovamente, ma mettete l’operatore di stringa punto (.) prima del segno dell’uguale. Si tratta in questo caso della solita scrittura abbreviata generale per $esempio = $esempio . 'World'.

Il PHP aggiunge il nuovo valore a quello definito prima. Se desiderate uno spazio vuoto tra i due valori, annotatelo come nell’esempio alla fine della prima stringa.

Integrare il codice PHP in quello HTML

L’interprete PHP si interessa principalmente solo del codice che si trova tra un tag PHP di apertura e uno di chiusura:

<?php [Questa sezione viene analizzata dall’interprete PHP] ?>

Tutte le altre parti del documento vengono ignorate dall’interprete e trasmesse al web server così come sono. Il codice PHP si può così integrare in una qualsiasi parte dei documenti HTML, per ad esempio creare un template per un CMS. Così bisogna prestare attenzione al fatto che i documenti HTML, che contengono codice PHP, vengano salvati come file PHP. Altrimenti il documento non viene pre-elaborato dall’interprete PHP, ma viene consegnato direttamente al browser, cosa che avrebbe come conseguenza il fatto che il codice del programma venga visualizzato come testo sul sito.

Potete così immaginarvi gli interpreti PHP come i colleghi pigri del web server, che lavorano solo nel momento in cui viene loro esplicitamente richiesto, ad esempio in presenza di tag PHP di apertura.

Se volete combinare HTML e PHP, scrivete la vostra pagina HTML come al solito secondo la classica struttura dei documenti e salvatela con l’estensione del file .php:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>My first PHP page</title>
  </head>
    <body>
  <h1>Hello World</h1>
  <p>What is the current time and date?</p>
  </body>
</html>

Ora aggiungete nel vostro documento HTML uno script PHP. Fate attenzione che il codice del programma complessivo si trovi all’interno dei tag PHP.

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>My first PHP page</title>
  </head>
  <body>
  <h1>Hello World</h1>
  <p>What is the current time and date?</p>
  <p>Your current time and date is: 
  <?php 
  echo date("d.m.Y H:i:s");
  ?>.</p>
  </body>
</html>

Nell’esempio abbiamo combinato il costrutto linguistico echo con la funzione date(), per far riprodurre lato server la data odierna comprensiva di ora come testo. Il parametro della funzione riproduce il formato desiderato sotto forma di stringa:

d.m.Y H:i:s = giorno.mese.anno ora:minuti:secondi

Se viene richiesto un file simile al browser, l’interprete PHP esegue prima di tutto lo script e scrive l’ora attuale come testo nel documento HTML che viene infine consegnato dal web server e visualizzato come pagina web nel browser.

La funzione di commento PHP

Come il codice HTML, anche quello PHP si può commentare a proprio piacimento. I commenti nel codice sorgente vengono ignorati dall’interprete PHP, se segnalati correttamente all’interno della sintassi. Per fare questo il PHP mette a disposizione tre diverse alternative.

Se voleste indicare una riga intera come commento e così escluderla dall’interpretazione, utilizzate l’hashtag (#) o due slash (//) consecutivi. Nell’esempio di codice seguente vengono utilizzate entrambe le opzioni:

<?php
#This is a single-line comment!
echo '<h1>Hello World!</h1>
<p>This is my first PHP page.</p>';
//This is also a single-line comment!
?>

L’editor di testo Notepad++ evidenzia i commenti in verde. I punti del testo segnalati nell’ambiente di script come commento non compaiono affatto sul browser, a differenza dei commenti HTML, visto che vengono ignorati già nell’esecuzione degli script da parte dell’interprete PHP.

Inoltre avete la possibilità di aggiungere commenti che si estendono su più righe. Perciò evidenziate l’inizio di un paragrafo di commento con uno slash seguito da un asterisco (/*) e la fine con un asterisco seguito da uno slash (*/).

<?php
/*
This is a multiple-lines comment block
that spans over multiple
lines
*/
echo '<h1>Hello World!</h1>
<p>This is my first PHP page.</p>';
?>

Anche questo tipo di commenti segnalati in questo modo non viene analizzato e non compare così sul sito.

I programmatori utilizzano i commenti per strutturare il codice sorgente dei loro script, per lasciare indicazioni per una successiva modifica o per la creazione di informazioni interne, come quelle sull’autore, o per aggiungere la data.

I commenti sono opzionali e dovrebbero venire utilizzati con parsimonia, per garantire una buona leggibilità del codice sorgente.

Calcolare con le variabili

Nel nostro tutorial PHP siete già venuti in contatto con le variabili alle quali sono state assegnate per prima cosa dei valori di stringhe (cioè delle sequenze). Ora ci occupiamo di quelle variabili che rappresentano i numeri interi (integers) o i numeri in virgola mobile (floats).

Una volta salvati i valori delle variabili, il PHP offre la possibilità di portare a termine questi calcoli. Cominciamo con un’addizione semplice di due numeri interi:

<?php
$numero1 = 237;
$numero2 = 148;
$risultato = $numero1 + $numero2;
echo "Risultato: " . $risultato;
?>

Prima di tutto attribuiamo alle variabili $numero1 e $numero2 i numeri interi 237 e 148 e assegniamogli infine una variabile $risultato, che deve salvare la somma delle variabili $numero1 e $numero2. Per questo ci serviamo dell’operatore aritmetico + (più). Infine diamo il risultato dell’addizione con l’aiuto del costrutto linguistico echo come testo. Fate attenzione perché nell’assegnazione di valori numerici alle variabili non servono le virgolette.

Il seguente codice di esempio indica una selezione di calcoli matematici che si possono eseguire lato server ricorrendo al PHP. Gli operatori utilizzati corrispondono per la maggior parte ai simboli standard utilizzati per effettuare calcoli matematici.

Operatore aritmetico Operazione Risultato
$numero1 + $numero2 Addizione Somma di $numero1 e $numero2
$numero1 - $numero2 Sottrazione Differenza di $numero1 e $numero2
$numero1 * $numero2 Moltiplicazione Prodotto di $numero1 e $numero2
$numero1 / $numero2 Divisione Quoziente di $numero1 e $numero2
$numero1 ** $numero2 Potenza $numero1 elevato a potenza di $numero2
<?php
$numero1 = 10;
$numero2 = 5;
$addizione = $numero1 + $numero2; //Addizione
$sottrazione = $numero1 - $numero 2; //Sottrazione
$moltiplicazione = $numero1 * $numero2; //Moltiplicazione
$divisione = $numero1 / $numero2; //Divisione
$potenza = $numero1 ** $numero2; //Calcolo della potenza
?>
<?php 
echo "Risultato dell‘addizione: " . $addizione ."<br />"; 
echo " Risultato della sottrazione: " . $sottrazione . "<br />"; 
echo " Risultato della moltiplicazione: " . $moltiplicazione . "<br />";
echo " Risultato della divisione" . $divisione . "<br />";
echo "10 elevato alla potenza di 5 (10^5): " . $potenza . "<br />";
echo "Radice di 81: " . sqrt(81) . "<br />";
?>

Per compiere dei calcoli complessi si possono combinare diverse operazioni aritmetiche in uno script:

<?php
$numero1 = 10;
$numero2 = 5;
$risultato = 2 * $numero1 + 5 * $numero2 - 3 * sqrt(81);
echo "Risultato: " . $risultato; 
?>

L’interprete PHP comunica i valori delle variabili e calcola:

2 * 10 + 5 * 5 - 3 * √81 = 20 + 25 – 27 = 18

La funzione sqrt() calcola la radice quadrata dei parametri tra parentesi. Per il calcolo viene seguito l’ordine di precedenza dei classici operatori matematici. L’istruzione echo dà il risultato come stringa per il browser.

I valori tra parentesi vengono anche valutati per primi nel PHP. Questa volta prendiamo in considerazione i numeri in virgola mobile:

<?php
$numero1 = 2.5;
$numero2 = 3.7;
$risultato = 2 * ($numero1 + 5) * ($numero2 - 3) * sqrt(81);
echo "Risultato: " . $risultato; 
?>

Come tutti i linguaggi di programmazione comuni, anche il PHP supporta operatori per aumentare o diminuire i valori numerici di 1. Si distingue tra operatore di pre-incremento, operatore di pre-decremento, operatore di post-incremento ed operatore di post-decremento.

Pre-incremento ++$numero L’operatore ++ incrementa il valore della variabile $numero. Così il valore viene aumentato di 1. Il risultato viene restituito come nuovo valore di $numero.
Pre-decremento --$numero L’operatore -- decrementa il valore della variabile $numero. Così il valore viene diminuito di 1. Il risultato viene restituito come nuovo valore di $numero.
Post-incremento $numero++ Il valore attuale di $numero viene prima di tutto restituito e infine aumentato di 1.
Post-decremento $numero-- Il valore attuale di $numero viene prima di tutto restituito e infine diminuito di 1.

Dimostriamo le operazioni di calcolo con operatori di incremento e di decremento prendendo ad esempio il pre-incremento. Il seguente script aumenta il valore della variabile $numero di 1, salva il nuovo valore nella variabile $risultato ed emette infine il suo valore come stringa:

<?php
$numero = 0;
$risultato = ++$numero;
echo "Risultato: " . $risultato;
?>

Se si aumenta il valore 0 di 1, si ottiene il risultato 1.

Per calcolare il pre-decremento della variabile $numero, ci serviamo degli stessi script, ma sostituiamo l’operatore di pre-incremento (++) con quello di pre-decremento (--):

<?php
$numero= 0;
$risultato = --$numero;
echo "Risultato: " . $risultato;
?>

Decrementiamo così il valore 0 con la variabile $numero e otteniamo il risultato -1.

Un aumento prima e dopo il risultato (pre vs. post) di un valore si può chiarire con il seguente script:

<?php
$x = 0;
echo '<p>Risultato: ' . ++$x;
echo '<br>x ha il valore ' . $x;
echo '<p> Risultato:' . $x++;
echo '<br> x ha il valore ' . $x, '</p>';
?> 

In entrambi i casi otteniamo lo stesso risultato. Nel pre-incremento il valore x viene aumentato prima dell’emissione nella riga 3 e nel post-incremento dopo l’emissione nella riga 5.

Le variabili superglobali $_GET e $_POST

Ora conoscete le nozioni base del PHP, sapete come comportarvi con le variabili, potete concatenarle e utilizzarle per fare dei calcoli. Ora vi mostriamo perché le variabili sono un concetto principale nella programmazione di script.

Una funzione importante dei linguaggi di scripting è la possibilità di valutare gli input utente e di trasmettere i valori in un altro script. Per la trasmissione dei dati il PHP si appoggia alle superglobali $_GET e $_POST, variabili di sistema predefinite che sono disponibili in tutti gli ambiti di validità. In qualità di array associativi (campi dei dati), $_GET e $_POST salvano una frase di variabili sotto forma di stringhe in una variabile.

Si possono immaginare gli array come un comò con più cassetti: ognuno di questi cassetti offre la possibilità di creare dati. Per poter ricordarsi dopo cosa ci sia all’interno di ogni cassetto, date un nome alla variabile. A seconda del tipo di array, si può trattare così di un indice o di una chiave (key). Mentre negli array indicizzati assegnate per ogni cassetto un indice sotto forma di numero, date il nome ai cassetti di un array associativo con una chiave sotto forma di una stringa (sequenza).

I superglobali $_GET e $_POST comprendono una serie di variabili sotto forma di chiavi che consentono di arrivare ai valori collegati a queste chiavi. Ritorneremo su questo punto quando approfondiremo i superglobali $_GET e $_POST.

Trasmissione dei dati tramite $_GET

Il superglobale $_GET rappresenta un array di variabili i quali possono essere trasmessi in uno script PHP tramite un URL.

Se di tanto in tanto frequentate blog o online shop e forum, vi saranno probabilmente balzati agli occhi gli URL unici in cui ci si imbatte su Internet. È comune una struttura secondo lo schema seguente:

http://nomehost/cartella/nomefile.php?nomevariabile=valorevariabile

Se si traspone questo schema su un blog, potrebbe apparire così:

http://www.blog-esempio.it/index.php?id=1

Un URL simile si può decifrare facilmente: su un web server con un dominio blog-esempio.it si trova un file con il nome index.php, che serve per la creazione di un sito dinamico, dove di solito vi è contenuto codice HTML e PHP così come link a file di template memorizzati e a fogli di stile esterni, in breve tutto quello che serve per visualizzare un sito. Che probabilmente si tratti di un sito dinamico, è segnalato dall’aggiunta dopo il punto interrogativo (?): id=1. Questo viene nominato come stringa di ricerca basata sul protocollo HTTP e comprende una variabile (id) e un valore (1) che sono collegati con un segno di uguale (=). I parametri URL di questo tipo vengono ad esempio usati per generare pagine dinamiche, per caricare contenuti da un database o richiamare un template adatto.

Le pagine web dinamiche consentono una divisione dei contenuti e della sua veste grafica. Il file index.php comprende quindi tutte le informazioni sulla struttura del sito, ma deve essere ancora riempito con i contenuti, di solito inseriti in un database e apribili tramite i parametri di una stringa di ricerca. Nel nostro esempio l’URL trasmette all’index.php il parametro id=1 che stabilisce quali contenuti devono essere selezionati dal database e caricati nell’index.php. In un blog si tratta per la maggior parte di un ID di un articolo preciso, mentre in un forum si richiama così un’informazione in particolare o un prodotto specifico nel caso di un online shop.

Se un URL comprende più di un parametro, questi vengono collegati con una “e commerciale” (&).

www.blog-esempio.it/index.php?page=article&id=1

Anche senza database è possibile chiarire l’uso di $_GET con il codice di esempio. Nello script seguente utilizziamo il superglobale $_GET per selezionare i valori delle variabili nome e cognome da una stringa di ricerca e scrivere le variabili PHP $variabile1 e $variabile2:

<?php
$variabile1 = $_GET['nome'];
$variabile2 = $_GET['cognome'];
echo "Hello " . $variabile1 . " " . $variabile2 . "!";
?>

L’esecuzione dello script avviene tramite l’URL seguente:

localhost/hello.php?nome=John&cognome=Doe

Trasmettiamo così i parametri nome=John e cognome=Doe. L’emissione dei valori avviene, come prima, grazie al costrutto linguistico echo.

Una trasmissione dei dati tramite $_GET comporta per forza il fatto che i dati trasmessi siano visibili nella barra degli indirizzi. Si può così comprendere in ogni momento quali parametri vengano trasmessi. Ciò ha il vantaggio che le variabili possano essere salvate negli hyperlink. Inoltre gli utenti hanno la possibilità di creare URL comprensivi di stringa di ricerca come segnalibro nel browser.

Il fatto che il parametro GET venga eseguito nel testo in chiaro nell’URL disqualifica questo metodo per la trasmissione di dati sensibili, come capita ad esempio nel caso di moduli online. Inoltre il volume dei dati che possono essere inviati tramite $_GET è limitato dalla lunghezza massima degli URL.

Si possono aggirare queste limitazioni con il metodo HTTP POST. I dati trasmessi in questo modo si trovano nel superglobale $_POST.

Trasmissione dei dati tramite $_POST

Mentre i dati da trasmettere nel metodo GET vengono trasmessi come parametro URL, la trasmissione dati avviene tramite $_POST nel body di una richiesta HTTP. Ciò consente agli sviluppatori di trasmettere anche una grande quantità di dati da uno script ad un altro.

Uno dei campi di applicazione principali del metodo HTTP POST consiste nella trasmissione dati dei moduli HTML. Ve lo spieghiamo riportandovi l’esempio di una registrazione a una newsletter.

Create un nuovo file PHP con il nome pagina1.php e inserite il seguente blocco di codice:

<form method="post" action="pagina2.php" >
Invia la newsletter: <br />
Inserisci il tuo nome: <input type="text" name="nome" /><br />
Inserisci il tuo cognome: <input type="text" name="cognome" /><br />
Inserisci il tuo indirizzo e-mail: <input type="text" name="email" /><br />
<input type="submit" value="Invia il modulo" />
</form> 

Per creare dei moduli viene utilizzato l’elemento HTML <form>. Ciò comprende due attributi nel tag iniziale: method e action. Con l’attributo method definite il metodo di trasmissione, in questo caso HTTP POST. Nell’attributo action viene creato l’URL di uno script che riceve i dati complessivi che devono essere inclusi nei campi di input successivi. L’esempio mostra un modulo HTML con tre elementi di input (input type="text") e un pulsante di invio (input type="submit"). Il file pagina2.php è definito come destinatario dei dati.

Per chiarire la trasmissione dei dati tramite $_POST, utilizziamo un semplice script per la valutazione dei dati dei moduli, il quale salva i valori trasmessi come variabili PHP e li emette sotto forma di testo. Create quindi un file pagina2.php e inserite il seguente codice del programma:

<?php
$nome = $_POST["nome"];
$cognome = $_POST["cognome"];
$email = $_POST["email"]; 
echo "Hello " . $nome . " " . $cognome . ", <br /> 
Ti sei registrato con il seguente indirizzo e-mail: " . $email . ".";
?>

Salvate entrambi i file PHP nella cartella htdocs del vostro server di test e aprite pagina1.php tramite l’URL seguente dal browser: http://localhost/pagina1.php. Il vostro browser vi mostra ora l’interfaccia interattiva del vostro modulo HTML.

Inserite dei dati di login qualsiasi e cliccate sul pulsante di invio per trasmettere le variabili da uno script all’altro. Non appena avete confermato l’input sulla pagina1.php, venite inoltrati immediatamente alla pagina2.php. La finestra del browser mostra il risultato dell’esecuzione dello script in base ai dati trasmessi.

Gli input utente, compresi tramite i campi di input della pagina1.php, vengono aperti dalla pagina2.php attraverso lo schema seguente:

$_POST["Nome del campo di input"]

Così le righe $nome = $_POST["nome"] aprono l’input nel campo nome e lo salvano nella variabile $nome. La variabile $nome si può di nuovo emettere tramite echo come stringa.

Il costrutto if e gli operatori di confronto PHP

Finora abbiamo definito le variabili, le abbiamo trasmesse da uno script a quello successivo ed emesse come stringhe. Nel prossimo passaggio imparate a collegare l’esecuzione di parti di codice a determinate condizioni.

Il costrutto linguistico if vi dà la possibilità di scrivere gli script di modo che le istruzioni diventino effettive solo se viene soddisfatta una condizione definita da voi, ad esempio l’inserimento di una password corretta.

Le condizioni vengono definite in PHP secondo la struttura di base seguente:

<?php
if(expression)
   {
   statement;
   }
?>

Il codice va letto nel modo seguente: solo nel caso in cui la condizione contenuta nell’expression è soddisfatta, verrà eseguito lo statement. Una condizione risulta soddisfatta sempre quando il costrutto if restituisce il risultato TRUE (vero). Altrimenti vale come FALSE (falso). In questo caso l’istruzione viene saltata.

Solitamente il costrutto if verifica se il valore di una variabile corrisponda a quello che è stato definito nella condizione. Di norma viene realizzata questa struttura di controllo sulla base di operatori di confronto.

Operatori di confronto

Gli operatori di confronto vengono utilizzati nella formulazione di condizioni per mettere in correlazione logica due argomenti, che possono essere valutati come veri (TRUE) o falsi (FALSE). Se gli operatori di confronto vengono utilizzati nelle strutture di controllo PHP, questi vengono applicati su due variabili nell’expression di un costrutto if:

if ($a == $b) 
   {
   statement;
   }

Espresso verbalmente, il costrutto sarebbe: quando una variabile $a è uguale alla variabile $b, allora vengono eseguite le istruzioni definite nello statement.

Gli operatori di confronto PHP si basano sul linguaggio di programmazione C e si differenziano nel loro modo di scrittura, per alcuni aspetti sostanzialmente, dai classici simboli matematici. Trovate un riepilogo nella tabella seguente.

Operatore di confronto Descrizione Condizione
== È uguale La condizione è soddisfatta quando $a e $b hanno lo stesso valore.
=== È identico La condizione è soddisfatta quando $a e $b hanno lo stesso valore e fanno parte dello stesso tipo di dati. Si può chiarire il concetto con un esempio, in cui viene confrontato un integer (1) con una stringa (1): 1 == "1" //TRUE 1 === "1" //FALSE. Utilizzate per le condizioni che presuppongono l’uguaglianza di due variabili sempre l’operatore di confronto === (è identico).
!= È diverso La condizione è soddisfatta quando $a e $b hanno valori differenti.
!== Non identico La condizione è soddisfatta quando $a e $b hanno valori differenti o fanno parte di diversi tipi di dati.
È minore di La condizione è soddisfatta quando il valore di $a è minore rispetto al valore di $b.
È maggiore di La condizione è soddisfatta quando il valore di $a è maggiore rispetto al valore di $b.
<= È minore o uguale La condizione è soddisfatta quando il valore di $a è minore rispetto al valore di $b o $a e $b hanno lo stesso valore.
>= È maggiore o uguale La condizione è soddisfatta quando il valore di $a è maggiore rispetto al valore di $b o $a e $b hanno lo stesso valore.

Il seguente script serve a chiarire questa struttura di controllo. Qui vengono messi a confronto due integers. Come operatore di confronto viene utilizzato < (è minore):

<?php
$numero1 = 10;
$numero2 = 20;
if($numero1 < $numero2) { 
    echo "La condizione è soddisfatta";
}

Definiamo queste variabili $numero1 e $numero2 e gli assegniamo i valori 10 e 20. Infine vi presentiamo una condizione: se $numero1 è minore di $numero2, dovrà essere restituita nell’istruzione echo la stringa introdotta.

Il risultato dello script contiene la risposta: 10 è minore di 20. Il costrutto if restituisce il risultato TRUE. La condizione è quindi soddisfatta.

Se volete definire le istruzioni che vengono eseguite non appena una condizione non viene soddisfatta, aggiungete al costrutto di controllo if il costrutto linguistico else secondo lo schema seguente:

<?php
if(condizione a)
    {
    istruzione b;
    }
else 
    {
    istruzione c
    }
?>

Anche questo script verifica se la condizione a restituisca il risultato TRUE o FALSE. Se la condizione a è soddisfatta (TRUE) verrà eseguita l’istruzione b. Se la condizione a non è soddisfatta (FALSE), verrà saltata l’istruzione b e al suo posto verrà eseguita l’istruzione c.

Ampliamo il nostro script del costrutto else e sostituiamo l’operatore di confronto < (è minore) con == (è uguale):

<?php
$numero1 = 10;
$numero2 = 20;
if($numero1 == $numero2) 
    { 
    echo "La condizione è soddisfatta";
    }
else 
    {
    echo " La condizione non è soddisfatta ";
    }
?>

Questa volta il costrutto if restituisce il risultato FALSE. Il valore della variabile $numero1 non è uguale al valore della variabile $numero2. La condizione non è quindi soddisfatta. Così non viene eseguita l’istruzione contenuta sotto if, ma quella sotto else.

Consiglio

Se l’esecuzione di una parte di codice è collegata all’uguaglianza di due valori, nel PHP viene utilizzato un doppio segno di uguale (==). Il segno di uguale semplice (=) lo utilizzate esclusivamente nell’assegnazione di valori a variabili. 

La negazione delle condizioni avviene anteponendo un punto esclamativo (!) all’interno dell’expression

<?php
$numero1 = 10;
$numero2 = 20;
if ($numero1 == $numero2) 
    { 
    echo "I numeri sono uguali.";
    }
if (!($numero1 == $numero2))
    {
    echo "I numeri sono diversi.";
    }
?>

L’esempio indica la condizione $numero1 == $numero2 e la loro negazione !($numero1 == $numero2) corrisponde a ($numero1 != $numero2).

Un’applicazione pratica di if ed else è ad esempio la richiesta di una password sulla base di un modulo HTML. Lo simuliamo di nuovo grazie ai nostri file PHP pagina1.php e pagina2.php.

Aprite la pagina1.php e aggiungete il seguente codice nel modulo:

<form action="pagina2.php" method="post">
Inserisci la password: <input type="password" name="password" />
<input type="submit" value="Invia" />
</form>

La struttura corrisponde a quella del modulo già creato. Ma questa volta sarà sufficiente un campo di input: la richiesta della password. Come in precedenza, gli input utente vengono trasmessi allo script pagina2.php. Questo script va adattato con il seguente codice che verificherà la password inserita con quella scelta:

<?php
$password = $_POST["password"];
if($password=="qwertz123")
   {
   echo "La password è corretta";
   }
else
   {
   echo "La password è errata";
   }
?>

Il codice si legge come segue: prima di tutto attribuiamo alla variabile $password nella riga 2 un valore che richiamiamo tramite il metodo HTTP POST. Infine definiamo la seguente struttura di controllo: il costrutto if nella riga 3 deve verificare, se il valore della variabile $password coincida con la stringa qwertz123. Se è questo il caso, verrà restituita la stringa La password è corretta. Se if restituisce il risultato FALSE, entra in azione else nella riga 7 e viene restituita la stringa La password è errata.

Ora apriamo lo script pagina1.php attraverso l’URL http://localhost/pagina1.php.

Il browser ci presenta la pagina web del nostro modulo HTML per la richiesta della password. Adempiamo alla richiesta, quindi inseriamo nello script pagina2.php la password definita quertz123 e clicchiamo sul pulsante invio.

Il browser ci inoltra automaticamente alla pagina2.php. In background la struttura di controllo if verifica il nostro inserimento con la password scelta e arriva al risultato “qwertz123 == qwertz123 è TRUE” e restituisce la stringa La password è corretta.

Provate ora voi a vedere cosa succede quando digitate una password diversa nel campo apposito.

Operatori logici

Le condizioni che definite grazie agli operatori di confronto nell’expression del costrutto if, si possono, se necessario, collegare con altre condizioni nella stessa expression. Il codice PHP si appoggia così agli operatori logici AND e OR.

Operatori logici: 

Alias simbolico Operatore Descrizione
&& AND Entrambe le condizioni che sono collegate con l’operatore devono essere TRUE.
// OR Basta che sia TRUE una delle due condizioni che è collegata con l’operatore.

Per collegare le condizioni, sono messi a disposizione nel PHP operatori logici con elementi di unione vincolanti e poco vincolanti. Se utilizzate solo uno dei due modi di scrittura, praticamente non noterete alcuna differenza. Se, invece, combinate questi due metodi di scrittura, constaterete che OR e || vincolano di più rispetto a AND e OR, mentre AND e && sono più vincolanti di OR e ||. Questo è comparabile con l’ordine di precedenza degli operatori, come vi sarà già noto dagli operatori aritmetici (ad esempio regola di precedenza: * vincola di più rispetto a +).

Un esempio classico è offerto di nuovo dalla richiesta della password. Di solito i dati del login comprendono una password segreta e un nome utente. Solo se entrambi i dati coincidono con quelli inseriti nel sistema, il login andrà a buon fine.

Apriamo di nuovo il nostro modulo per la richiesta della password nella pagina1.php e aggiungiamo un campo per il nome utente:

<form action="pagina2.php" method="post">
Benutzername: <input type="text" name="username" /><br />
Passwort: <input type="password" name="password" /><br />
<input type="submit" value="Invia" />
</form>

Nel prossimo passaggio dobbiamo anche adeguare la struttura di controllo del costrutto if. Per questo utilizziamo l’operatore logico AND per collegare la condizione per la richiesta della password con una condizione per la richiesta del nome utente.

<?php
$username = $_POST["username"];
$password = $_POST["password"];

if($username=="John Doe" AND $password=="qwertz123")
   {
   echo "Benvenuto nella tua area riservata" . $username . "!";
   }
else
   {
   echo "Accesso negato";
   }
?>

Il nostro script pagina2.php ha ora ricevuto i valori per username e password e li salva nelle variabili $username e $password. L’expression del costrutto if comprende qui due condizioni che sono collegate con l’operatore logico AND. Solo se entrambe le condizioni sono soddisfatte (username=="John Doe" e $password=="qwertz123"), if restituisce il risultato TRUE.

Visto che otteniamo il nome utente tramite il campo di input username, possiamo utilizzarlo direttamente per la generazione del testo tramite echo: a Benvenuto nella tua area riservata segue il valore della variabile $username. Se una delle due condizioni non è soddisfatta, viene restituito il testo: accesso negato.

Gli operatori logici si possono combinare a piacimento. Vale però la regola che AND ha la precedenza su OR. Come nelle equazioni matematiche, anche nel PHP potete utilizzare le parentesi per influenzare l’ordine di precedenza.

Cicli (while, for)

A volte è necessario che uno script ripeta più volte una parte di codice precisa prima che venga eseguito il codice del programma rimanente. Per questo i linguaggi di programmazione utilizzano il concetto del ciclo. Si distinguono tre tipi di cicli:

  • Ciclo while
  • Ciclo do-while
  • Ciclo for

Ciclo while

Il ciclo while è il tipo di ciclo più semplice messo a disposizione nel linguaggio PHP. La struttura di base segue lo schema seguente: 

while (condizione)
    {
    Passaggio del ciclo e altre istruzioni
    }

Il ciclo while indica al PHP di eseguire istruzioni subordinate nel momento in cui la condizione while è soddisfatta. Per questo l’interprete PHP verifica la condizione all’inizio di ogni ciclo. L’esecuzione del codice subordinato viene interrotto solo quando la condizione while non è più soddisfatta.

Si può chiarire questo principio con un semplice script numerico:

<?php
$numero = 1;
while ($numero <= 10) {
    echo $numero++ . "<br />";  
    }
  ?>

Nel paragrafo “Calcolare con le variabili” è stato introdotto il principio dell’incremento. Nel seguente script ne facciamo uso, optando però per un operatore di post-incremento per aumentare di 1 il valore della variabile di integer $numero per ciclo, dopo l’emissione del testo tramite echo. Come condizione per il ciclo while definiamo: $numero minore di/uguale a 10. L’istruzione echo viene così ripetuta fino a quando $numero non ha accettato un valore maggiore di 10.

Il risultato dell’esecuzione dello script è una stringa che emette per ogni ciclo il valore della variabile $numero, prima che questa venga incrementata. Lo script conta così da 1 a 10 e termina l’esecuzione del codice quando la condizione while non è più soddisfatta.

Ciclo do-while

La struttura del ciclo do-while equipara quella del ciclo while. La differenza è solo che la condizione non viene verificata all’inizio di ogni ciclo, ma alla fine. Lo schema di base di un ciclo do-while corrisponde all’esempio seguente:

do {
   Passaggio del ciclo e altre istruzioni
    } 
   while (condizione)

Programmato come ciclo do-while, lo script precedente sarebbe così:

<?php
$numero = 1;
do {
    echo $numero++ . "<br />";
    }
while ($numero <= 10); 
  ?>

Il risultato rimane in questo caso lo stesso. La particolarità del ciclo do-while è che deve essere compiuto almeno una volta, anche quando la condizione non viene soddisfatta in nessun ciclo.

Ciclo for

Essenzialmente il ciclo for in uno script PHP ha la stessa funzione del ciclo while. A differenza di questo però il valore iniziale, la condizione e l’istruzione vengono annotati all’interno di una riga e non distribuiti su tre o più righe. La struttura di base del ciclo for corrisponde al seguente schema:

for (valore iniziale; condizione; passaggio del ciclo)

  Istruzioni

Riprendendo l’esempio già introdotto, si può annotare così il ciclo for in forma compatta:

<?php
for($numero = 1; $numero <= 10; $numero++) {
   echo $numero . "<br /> ";
}
?>

Prima di tutto per la variabile $numero viene definito il valore 1. Poi il PHP verifica se la condizione $numero <= 10 è soddisfatta. Se è questo il caso, il ciclo prosegue e vengono eseguite le istruzioni al di fuori del ciclo (qui l’istruzione echo). Solo dopo viene eseguito il ciclo; in questo caso non è importante scegliere un pre-incremento o un post-incremento, perché questa istruzione viene eseguita in ogni caso prima dell’emissione. Una volta che il ciclo è concluso, comincia il prossimo.

In un ciclo for, il valore iniziale, la condizione e il ciclo sono elementi opzionali. Teoricamente sono possibili cicli vuoti, che però sarebbero ridondanti.

Essenzialmente dipende da voi se volete scrivere i vostri script PHP con un ciclo for o while. Un argomento che viene portato a favore dei cicli for sostiene che se vengono preferiti dei cicli for, si tengono meglio sotto controllo i dati generali del ciclo. Ciò previene il pericolo di scrivere erroneamente dei cicli infiniti che vengono compiuti finché la memoria a disposizione dell’interprete non sarà piena. Riferendosi all’esempio precedente, ciò accade se dimenticate di aumentare il valore della variabile $numero.

Se, però, il ciclo viene eseguito una volta, indipendentemente dalla condizione, il ciclo do-while è quello giusto da scegliere.

break e continue

L’esecuzione di un ciclo while, do-while o for si può influenzare tramite le istruzioni break e continue. Si utilizza break per interrompere l’esecuzione di un ciclo in un punto qualsiasi e continue per saltare un passaggio del ciclo. Entrambe le istruzioni vengono collegate ad una condizione tramite if. Il seguente esempio indica il nostro script numerico con l’istruzione break:

<?php
for ($numero = 1; $numero <= 10; $numero++) {
    if ($numero == 5) {
      echo "A 5 interrompiamo lo script!";
      break;
    }
echo $numero . "<br /> ";
}
?>

Nel ciclo for abbiamo definito che il valore della variabile $numero partendo da un numero iniziale 1 deve essere aumentato in ogni ciclo di 1 fino a quando la variabile non avrà raggiunto il valore 10. Interrompiamo prima questo ciclo con l’istruzione break, non appena $numero ha raggiunto il valore 5. Il costrutto linguistico echo emette così solo i numeri da 1 a 4.

Se vogliamo solo saltare l’emissione del quinto ciclo, ma senza interromperlo del tutto, sostituiamo l’istruzione break con continue:

<?php
for ($numero=1; $numero <= 10; $numero++) {
    if ($numero == 5) {
      echo "Saltiamo il 5!<br />";
      continue;
    }
echo $numero . "<br /> ";
}
?>

Il PHP emette, al posto della cifra 5, la stringa di testo Saltiamo il 5!, definita con if.

Operazioni con i file

Alla base dei siti web dinamici c’è una separazione tra contenuto e presentazione grafica. I linguaggi di scripting come il PHP hanno perciò a disposizione diverse funzioni che consentono di caricare i contenuti da fonti di dati esterne nei file template principali. In pratica si tratta nel caso di queste fonti di dati soprattutto di database, che vengono gestiti dai sistemi di gestione di dati come MySQL. Scoprite come funziona nel nostro tutorial MySQL per principianti.

Inoltre c’è la possibilità di integrare dati dai file. Di seguito vi indichiamo come inserire i file come stringa in uno script PHP e come salvare la generazione del testo del vostro script.

Inserire i file

Per inserire il contenuto di un file, il PHP mette a disposizione diverse funzioni e qui si adattano allo scopo specialmente file() e file_get_contents(). Mentre la funzione file_get_contents() legge tutto il contenuto di un file, la funzione file() salva il contenuto come array. Ogni elemento dell’array corrisponde ad una riga del file. Tramite file() è così possibile più facilmente l’emissione singola di ogni riga.

Dimostriamo le operazioni del file in PHP sul file di testo esempio.txt, presente nella cartella htdocs del nostro server di test. Il file contiene 4 righe di testo segnaposto:

Lorem ipsum dolor sit amet, consectetuer adipiscing elit.

Aenean commodo ligula eget dolor. Aenean massa.

Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.

Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem.

Prima di tutto inseriamo il file completo come stringa. Perciò dobbiamo assegnare alla funzione file_get_contents() il nome del file corrispondente come parametro. Ciò avviene secondo lo schema seguente:

file_get_contents('esempio.txt')

Ora abbiamo la possibilità di lavorare con la stringa inserita. Possiamo ad esempio assegnarle una variabile ed emetterla come testo nel browser:

<?php
$esempio = file_get_contents('esempio.txt');
echo $esempio;
?>

Nella schermata del browser vediamo che la stringa di testo viene emessa senza paragrafi. I ritorni a capo del file originale non sono visibili. Ciò ha quindi la conseguenza che il browser interpreta l’emissione del testo dello script come codice HTML. Le interruzioni che vengono definite negli editor di testo vanno di conseguenza perse.

Se volete attenervi alla struttura originaria, avete diverse possibilità. Potete aggiungere la codifica HTML per il ritorno a capo (br) nel file di output manualmente tramite la funzione trova e sostituisci, inserire un <pre> all’interno del file, assegnare al punto corrispondente la proprietà CSS white-space: pre-wrap o utilizzate la funzione nl2br(), per segnalare al PHP che i ritorni a capo (new lines) devono essere convertiti automaticamente in ritorni a capo HTML (breaks). Utilizzate la funzione secondo lo schema seguente:

<?php
$esempio = file_get_contents('esempio.txt');
echo nl2br($esempio);
?>

Se il costrutto linguistico echo viene utilizzato in combinazione con nl2br(), il PHP aggiunge prima di ogni nuova riga un ritorno  a capo HTML.

Se volete emettere le righe di un file singolarmente, si presta ad essere utilizzata la funzione file(), che inserisce un file, numera tutte le righe a partire da 0 e salva i suoi contenuti come elementi di un array. Applicato al nostro esempio ne emerge così il seguente ordine:

[0] = Lorem ipsum dolor sit amet, consectetuer adipiscing elit.

[1] = Aenean commodo ligula eget dolor. Aenean massa.

[2] = Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.

[3] = Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem.

Per emettere i rispettivi contenuti tramite echo, dovete solo indicare il numero di riga appropriato. Così il seguente script ci consegna ad esempio solo la prima riga del file esempio.txt come output per il browser:

<?php
$esempio = file("esempio.txt");
echo $esempio [0];
?>

Scrivere i file

Con il PHP non solo si selezionano i file, ma questo linguaggio di scripting vi dà anche la possibilità di creare file e di descriverli con contenuti.

A questo scopo utilizziamo la funzione PHP file_put_contents(), che richiede due parametri: il nome del file che deve essere creato o aggiornato e i dati sotto forma di stringa o array. Il seguente script crea il file test.txt e scrive la stringa Questo è un test! nella prima riga. L’aggiunta \r\n comporta un ritorno a capo nel file di destinazione.

<?php
file_put_contents("test.txt", "Questo è un test! \r\n");
echo "test.txt è stato creato!";
?> 

Visto che file_put_contents non consegna nessun output per il browser, aggiungiamo un’istruzione echo che emette quale azione sarà eseguita.

Se nella cartella di destinazione si trova già un file con lo stesso nome, verrà sovrascritto; se volete impedirlo, impostate il parametro FILE_APPEND:

<?php
file_put_contents("test.txt","Il test è andato a buon fine! \r\n", FILE_APPEND);
echo "test.txt è stato aggiornato!";
?>

Se utilizzate file_put_contents() con il parametro FILE_APPEND, i nuovi contenuti vengono allegati a quelli già esistenti.

Ciò che il PHP scrive nel file di destinazione, non deve essere per forza definito nello script. Alternativamente avete la possibilità di trasmettere i contenuti da un file ad un altro. Il seguente script seleziona il contenuto di esempio.txt e lo aggiunge al file test.txt:

<?php
$esempio = file_get_contents("esempio.txt");
file_put_contents("test.txt", $esempio, FILE_APPEND);
echo "test.txt è stato aggiornato!";
?>
Per offrirti una migliore esperienza di navigazione online questo sito web usa dei cookie, propri e di terze parti. Continuando a navigare sul sito acconsenti all’utilizzo dei cookie. Scopri di più sull’uso dei cookie e sulla possibilità di modificarne le impostazioni o negare il consenso.