PHP è un linguaggio di scripting lato server, nato per il web. Il codice viene eseguito sul server e produce HTML (o JSON, o altro) inviato al browser.
// eseguito con:
php -S localhost:8000
// oppure con Apache/Nginx + mod_php / php-fpm
Il codice PHP vive dentro tag <?php ... ?>, anche in mezzo a HTML normale.
<?php
echo "Ciao mondo";
?>
Ogni istruzione termina con ;.
Le variabili iniziano sempre con $. Tipizzazione dinamica, come Lua: nessuna dichiarazione di tipo richiesta.
$nome = "Dario";
$eta = 41;
$pi = 3.14;
Tipi scalari: string, int, float, bool. Più array, null, object.
var_dump(42); // int(42)
var_dump("ciao"); // string(5) "ciao"
var_dump(true);
var_dump(null);
Concatenazione con .; le stringhe tra doppi apici interpolano variabili.
$nome = "Dario";
echo "Ciao " . $nome; // concatenazione
echo "Ciao $nome"; // interpolazione
Aritmetici: + - * / % **. Confronto: == === != !== < >. Logici: && || !.
Nota: == confronta con coercizione di tipo, === confronta anche il tipo (preferire sempre ===).
0 == "a"; // false in PHP 8+ (era true in PHP 7)
0 === "a"; // false, sempre
L'array è la struttura dati centrale di PHP, come la tabella in Lua — ma qui indicizzazione a partire da 0.
$colori = ["rosso", "verde", "blu"];
echo $colori[0]; // "rosso"
$colori[] = "giallo"; // append
Stesso tipo array, ma con chiavi stringa (equivalente alla tabella-come-mappa di Lua).
$persona = [
"nome" => "Dario",
"città" => "Palermo",
];
echo $persona["nome"];
if ($eta >= 18) {
echo "maggiorenne";
} elseif ($eta > 0) {
echo "minorenne";
} else {
echo "non valido";
}
switch ($colore) {
case "rosso": echo "stop"; break;
case "verde": echo "vai"; break;
default: echo "?";
}
// match (PHP 8+): confronto stretto, senza fallthrough
$esito = match($colore) {
"rosso" => "stop",
"verde" => "vai",
default => "?",
};
for ($i = 0; $i < 5; $i++) {
echo $i;
}
$i = 0;
while ($i < 5) {
echo $i;
$i++;
}
do {
echo $i;
} while ($i < 0); // eseguito almeno una volta
Il modo idiomatico di iterare array, indicizzati o associativi — analogo a pairs()/ipairs() in Lua.
foreach ($colori as $colore) {
echo $colore;
}
foreach ($persona as $chiave => $valore) {
echo "$chiave: $valore";
}
function somma($a, $b) {
return $a + $b;
}
echo somma(2, 3); // 5
function saluta($nome = "ospite") { echo "Ciao $nome"; }
function somma_tutti(...$numeri) {
return array_sum($numeri);
}
$quadrato = fn($x) => $x * $x; // arrow function, PHP 7.4+
Variabili predefinite, disponibili ovunque, che portano i dati della richiesta HTTP.
$_GET["pagina"]; // parametri in query string
$_POST["email"]; // dati di un form inviato via POST
$_SERVER["REQUEST_METHOD"];
$_SESSION["utente"]; // dopo session_start()
Per modularizzare il codice in più file, come require in Lua.
require "config.php"; // errore fatale se manca
include "header.php"; // solo avviso se manca
class Persona {
public string $nome;
public function __construct(string $nome) {
$this->nome = $nome;
}
public function saluta(): string {
return "Ciao, sono {$this->nome}";
}
}
$p = new Persona("Dario");
echo $p->saluta();
try {
if ($divisore === 0) {
throw new InvalidArgumentException("divisione per zero");
}
echo $numero / $divisore;
} catch (InvalidArgumentException $e) {
echo "Errore: " . $e->getMessage();
} finally {
echo "fine tentativo";
}
Con questo giro hai visto: sintassi, variabili, tipi, array, controllo di flusso, funzioni, superglobali, OOP essenziale ed eccezioni — la spina dorsale di PHP, nello stesso spirito compatto di questo tour su Lua.
Prossimo passo naturale: scrivere un piccolo script che legge $_GET o $_POST e risponde con HTML o JSON.