PHP 8 — Basi e Sintassi

Tag, variabili, tipi di dato, echo, concatenazione · PHP 8.5 · Marco Consiglio
Volta Institute · Napoli
A.A. 2026
🐘 Cos'è PHP e perché conta ancora nel 2026
PHP è un linguaggio lato server: il codice viene eseguito sul server web (non nel browser dell'utente, a differenza di JavaScript) e produce come risultato l'HTML che il visitatore riceve. Nonostante l'età, PHP alimenta ancora circa il 72% dei siti con linguaggio server-side rilevabile — è il motore dietro WordPress, gran parte di Shopify (guida già vista) e migliaia di applicazioni web aziendali. La versione di riferimento nel 2026 è PHP 8.5 (rilasciata a novembre 2025): rispetto al vecchio PHP 5/7 che si trova ancora in molti tutorial datati, PHP 8 ha introdotto sintassi più moderna, tipizzazione più rigorosa e prestazioni molto superiori.
💡 Lato server vs lato client: ricorda la differenza dalle guide JavaScript — lì il codice gira nel browser dell'utente; qui il codice PHP gira sul server, genera HTML/dati, e solo il risultato finale arriva al browser. L'utente non vede mai il codice PHP originale.
🏷️ I tag PHP e il tuo primo output
Il codice PHP vive dentro i tag <?php ... ?>, che possono essere inseriti anche in mezzo a normale codice HTML — questo è ciò che rende PHP un linguaggio "embedded" nelle pagine web.
<!DOCTYPE html> <html> <body> <?php echo "Ciao, Volta Institute!"; ?> </body> </html> // Il browser riceve: <body>Ciao, Volta Institute!</body> // Il tag PHP e il suo contenuto SPARISCONO, resta solo l'output prodotto
💡 echo è l'istruzione più usata per produrre output — a differenza di console.log() in JavaScript (che stampa in una console per debug), echo in PHP scrive direttamente nel documento HTML che il visitatore riceverà.
📄 echo vs print — piccole differenze
<?php echo "Prima riga"; echo "Seconda", " riga"; // echo accetta più argomenti separati da virgola print "Terza riga"; // print accetta un SOLO argomento ?>
💡 Nella pratica quotidiana, echo è preferito perché leggermente più veloce e più flessibile (più argomenti); print si trova ancora in codice legacy ma non offre vantaggi pratici oggi.
📦 Variabili — sempre precedute dal simbolo $
In PHP ogni variabile inizia con il simbolo $ — questo la distingue immediatamente da funzioni, costanti e parole chiave del linguaggio, un tratto distintivo rispetto a JavaScript.
<?php $nome = "Marco"; $età = 28; $attivo = true; $prezzo = 19.99; echo $nome; // → Marco ?>
💡 A differenza di JavaScript, PHP non richiede let/const/var per dichiarare una variabile: basta scrivere $nomeVariabile = valore; e la variabile esiste automaticamente.
🔤 I tipi di dato principali
TipoEsempioDescrizione
string"Napoli"Testo, tra apici singoli o doppi
int42Numero intero
float19.99Numero decimale
booltrue / falseBooleano
array[1, 2, 3]Collezione di valori (vedi guida dedicata)
nullnullAssenza di valore
<?php $prezzo = 19.99; echo gettype($prezzo); // → double (PHP chiama i float internamente "double") var_dump($prezzo); // → float(19.99) — mostra tipo E valore, utile per debug ?>
✅ var_dump() è lo strumento di debug più usato in PHP: mostra tipo e valore esatto di qualsiasi variabile, molto più informativo di un semplice echo.
🏛️ Tipizzazione dinamica ma "type-safe" da PHP 8
PHP resta a tipizzazione dinamica (non serve dichiarare il tipo di ogni variabile come in linguaggi come Java), ma da PHP 7+ e ancora di più in PHP 8 puoi aggiungere tipi espliciti su parametri di funzione e proprietà — un compromesso moderno tra flessibilità e sicurezza, trattato nella guida sulle Funzioni.
🔗 Concatenazione con il punto
Per unire stringhe e variabili, PHP usa il punto . — non il + come in JavaScript, un'altra differenza sintattica da ricordare.
<?php $nome = "Giulia"; $corso = "Full Stack"; echo $nome . " frequenta " . $corso; // → Giulia frequenta Full Stack $messaggio = "Benvenuto, "; $messaggio .= $nome; // .= concatena e riassegna, equivalente a: $messaggio = $messaggio . $nome echo $messaggio; // → Benvenuto, Giulia ?>
⚠️ Il trabocchetto più comune per chi viene da JavaScript: scrivere $nome + $corso non concatena — il + in PHP è sempre e solo l'operatore matematico di somma, anche tra stringhe (con risultati spesso inattesi).
🧵 Interpolazione — variabili dentro le stringhe
Con le stringhe tra doppi apici " ", PHP sostituisce automaticamente le variabili al loro interno — un meccanismo simile ai template literal di JavaScript, ma con sintassi diversa.
<?php $nome = "Marco"; $voto = 28; echo "$nome ha preso $voto"; // → Marco ha preso 28 (doppi apici: variabili sostituite) echo '$nome ha preso $voto'; // → $nome ha preso 28 (apici singoli: NESSUNA sostituzione!) echo "Totale: {$voto}0"; // → Totale: 280 (graffe per delimitare chiaramente la variabile) ?>
⚠️ Apici singoli vs doppi: solo le stringhe con doppi apici interpolano le variabili. Con gli apici singoli, $nome resta testo letterale — un errore molto comune per chi non conosce questa distinzione.
⚙️ Null coalescing (??) — gestire valori assenti con eleganza
L'operatore ?? (PHP 7+, oggi standard) restituisce il valore a sinistra se esiste e non è null, altrimenti quello di destra — utile per gestire dati potenzialmente mancanti (es. da un form) senza scrivere if/else espliciti.
<?php $nomeUtente = $_GET['nome'] ?? 'Ospite'; // se $_GET['nome'] non esiste o è null, $nomeUtente diventa 'Ospite' $config = []; $config['tema'] ??= 'chiaro'; // ??= assegna SOLO se il valore è attualmente null/assente echo $config['tema']; // → chiaro ?>
💡 ?? sostituisce il vecchio pattern isset($x) ? $x : 'default', molto più verboso — questo operatore verrà usato spesso nella guida su Form e Superglobali.
🔀 match expression (PHP 8.0+) — l'evoluzione dello switch
match è la versione moderna e più sicura di switch: confronto stretto (come ===), nessun rischio di "fall-through" dimenticando break, e restituisce direttamente un valore.
<?php $voto = 25; $giudizio = match(true) { $voto >= 28 => "Ottimo", $voto >= 24 => "Buono", $voto >= 18 => "Sufficiente", default => "Non ammesso", }; echo $giudizio; // → Buono ?>
✅ A differenza di switch, match non richiede break (nessun fall-through accidentale) ed è un'espressione: il suo risultato si può assegnare direttamente a una variabile, come mostrato sopra.
🧩 Commenti in PHP
<?php // Commento su una singola riga # Anche questo è un commento su una riga (stile alternativo) /* Commento multi-riga */ ?>
✅ Buone pratiche essenziali

• Usa sempre declare(strict_types=1); in cima ai file per una tipizzazione più rigorosa (approfondito nella guida Funzioni)
• Nomina le variabili in camelCase ($nomeUtente) o snake_case ($nome_utente) — scegli uno stile e resta coerente
• Chiudi sempre i tag ?> tranne che nell'ultimo file di un progetto (evita spazi bianchi accidentali dopo la chiusura)
• Preferisci sempre PHP 8.4/8.5 in nuovi progetti: sintassi più sicura e performance nettamente superiori rispetto a PHP 5/7