Quick PHP Tour

sullo stile di "Quick Lua Tour" (AGR Wilson, adattato da Dario Cangialosi)

1. Cos'è PHP

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

2. Sintassi di base

Il codice PHP vive dentro tag <?php ... ?>, anche in mezzo a HTML normale.

<?php
echo "Ciao mondo";
?>

Ogni istruzione termina con ;.

3. Variabili

Le variabili iniziano sempre con $. Tipizzazione dinamica, come Lua: nessuna dichiarazione di tipo richiesta.

$nome = "Dario";
$eta = 41;
$pi = 3.14;

4. Tipi

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);

5. Stringhe

Concatenazione con .; le stringhe tra doppi apici interpolano variabili.

$nome = "Dario";
echo "Ciao " . $nome;   // concatenazione
echo "Ciao $nome";      // interpolazione

6. Operatori

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

7. Array indicizzati

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

8. Array associativi

Stesso tipo array, ma con chiavi stringa (equivalente alla tabella-come-mappa di Lua).

$persona = [
    "nome" => "Dario",
    "città" => "Palermo",
];
echo $persona["nome"];

9. Condizionali

if ($eta >= 18) {
    echo "maggiorenne";
} elseif ($eta > 0) {
    echo "minorenne";
} else {
    echo "non valido";
}

10. Switch e match

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 => "?",
};

11. Ciclo for

for ($i = 0; $i < 5; $i++) {
    echo $i;
}

12. while / do-while

$i = 0;
while ($i < 5) {
    echo $i;
    $i++;
}

do {
    echo $i;
} while ($i < 0);   // eseguito almeno una volta

13. foreach

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";
}

14. Funzioni

function somma($a, $b) {
    return $a + $b;
}
echo somma(2, 3);   // 5

15. Funzioni: default, variadic, arrow

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+

16. Superglobali

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()

17. include / require

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

18. Classi (OOP essenziale)

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();

19. Gestione errori

try {
    if ($divisore === 0) {
        throw new InvalidArgumentException("divisione per zero");
    }
    echo $numero / $divisore;
} catch (InvalidArgumentException $e) {
    echo "Errore: " . $e->getMessage();
} finally {
    echo "fine tentativo";
}

20. Per chiudere

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.