Tutorial PHP con esempi da eseguire
Un tutorial e riferimento gratuito di PHP 8: array, foreach, funzioni per le stringhe, date, form, classi ed errori. Ogni esempio gira nella pagina, e quelli che stampano HTML mostrano la pagina con form che puoi inviare.
Inizia un percorso guidato di PHPPrimi passi
- Cos'è PHP?PHP è un linguaggio di scripting lato server: un file PHP viene eseguito sul web server e invia al browser l'HTML che costruisce. È alla base di WordPress, Laravel e di una grossa fetta del web, e esegue anche script da riga di comando.
- Installare PHPInstalla PHP con un solo comando: winget su Windows, Homebrew su macOS, apt o dnf su Linux. Poi esegui php -v in un terminale per verificare che funzioni e quale versione hai.
- Eseguire PHPEsegui un file PHP dal terminale con php index.php, oppure servi una cartella nel browser con il server integrato di PHP: php -S localhost:8000. Non servono né Apache né XAMPP.
- echo e printecho stampa una o più stringhe: echo "Hello, $name"; oppure echo $a, $b;. È il modo abituale per inviare testo o HTML alla pagina. print fa lo stesso con un solo valore e restituisce 1; <?= $x ?> è la forma breve dentro l'HTML.
- Segnalazione erroriPer mostrare tutti gli errori PHP, metti ini_set('display_errors', '1'); ed error_reporting(E_ALL); in cima allo script, oppure imposta display_errors = On ed error_reporting = E_ALL in php.ini. In produzione registra gli errori in un log invece di mostrarli.
- PHP vs PythonPHP è fatto per il web: un file viene eseguito a ogni richiesta e stampa una pagina, ed è alla base di WordPress e Laravel. Python è un linguaggio generico che fa anche web (Django, Flask) e domina data science, automazione e machine learning.
- PHP vs JavaScriptPHP gira sul server e invia al browser HTML già pronto. JavaScript gira nel browser, dove modifica la pagina dopo il caricamento, e sul server con Node.js. La maggior parte dei siti li usa entrambi: PHP per costruire pagine e API, JavaScript per l'interazione.
Nozioni di base
- VariabiliUna variabile PHP inizia con $ e nasce quando le assegni un valore: $name = "Ada";. Non c'è una parola chiave di dichiarazione né un tipo fisso. Le funzioni non vedono le variabili esterne a meno che tu non le passi, usi global o le catturi; static conserva un valore tra le chiamate.
- Tipi di datiPHP ha dieci tipi: quattro scalari (int, float, string, bool), quattro composti (array, object, callable, iterable) e due speciali (null, resource). var_dump($x) mostra tipo e valore, gettype($x) restituisce il nome del tipo.
- StringheUnisci le stringhe PHP con l'operatore punto ("Hello, " . $name) oppure metti le variabili direttamente tra virgolette doppie ("Hello, $name"). Le virgolette singole stampano il testo così com'è. Impara la concatenazione, .=, l'interpolazione di array e oggetti e il cambio di maiuscole con strtoupper, strtolower, ucfirst e ucwords.
- Heredoc e nowdocUn heredoc PHP è una stringa su più righe che inizia con <<<EOT e termina con EOT; sostituisce le variabili come una stringa tra virgolette doppie. Un nowdoc, <<<'EOT', mantiene il testo esattamente com'è. Impara la sintassi, le regole di indentazione, l'interpolazione di array e oggetti e i template HTML.
- OperatoriGli operatori PHP lavorano sui valori: +, -, *, /, %, ** per l'aritmetica, =, +=, .=, ??= per l'assegnazione, &&, ||, ! e xor per la logica, . per unire stringhe, ==, ===, <=> per il confronto e ++, -- per incrementare. Impara ogni gruppo con esempi eseguibili, più la trappola di precedenza tra and e &&.
- Operatori di confrontoPHP confronta i valori con == (uguali dopo la conversione dei tipi), === (stesso valore e stesso tipo), != e !==, < > <= >= e l'operatore spaceship <=>. Scopri quando == converte i tipi, cosa è cambiato in PHP 8, e vedi ogni confronto stretto e non stretto in un'unica tabella.
- Operatore ternarioL'operatore ternario PHP è un if/else su una riga: $result = $condition ? 'yes' : 'no';. Impara il ternario breve ?: (operatore Elvis), in cosa differisce da ??, perché da PHP 8 i ternari annidati richiedono le parentesi e quando match è la scelta più pulita.
- Null coalescing ??L'operatore di null coalescing PHP restituisce il lato sinistro a meno che non sia null o non impostato: $name = $_GET['name'] ?? 'Guest';. Non dà mai warning per una variabile o una chiave di array mancante. Impara le catene di ??, l'assegnazione ??=, ?? vs ?: e l'operatore nullsafe ?->.
- Type castingConverti una stringa PHP in intero con (int) $str o intval($str); (int) "42" vale 42 e (int) "12abc" vale 12. Impara i cast a int, float, bool, string e array, le stringhe numeriche, intval con una base, settype e come validare l'input invece di ottenere 0 in silenzio.
- CostantiUna costante PHP è un nome per un valore che non può cambiare: const MAX_USERS = 100; oppure define('MAX_USERS', 100);. Impara define vs const, costanti array, costanti di classe con self::, il controllo con defined() e le costanti magiche __LINE__, __FILE__, __DIR__ e __CLASS__.
- isset()isset($var) restituisce true quando una variabile esiste e non è null, altrimenti false, senza alcun warning. Controlla anche chiavi di array e proprietà di oggetti: isset($user['email']). Impara isset con più variabili, chiavi annidate, isset vs empty, isset vs array_key_exists e il controllo dell'invio dei form.
- empty()empty($var) restituisce true quando una variabile manca o è falsy: null, false, 0, 0.0, "", "0" o []. Non genera mai warning per variabili o chiavi non definite. Scopri perché "0" conta come vuoto, come verificare esattamente una stringa o un array vuoto, empty vs isset e la validazione dell'input dei form.
- Matematica e arrotondamentiround($x, 2) arrotonda a due decimali, floor() arrotonda sempre per difetto e ceil() sempre per eccesso. Inoltre intdiv(), l'operatore %, ** per le potenze, abs(), max(), min() e random_int() per i numeri casuali.
Controllo del flusso
- if, elseif, elseif (condizione) { ... } esegue un blocco solo quando la condizione è vera, elseif controlla la condizione successiva ed else viene eseguito quando nessuna corrisponde. Copre elseif vs else if, && e ||, i valori truthy e la sintassi if: endif; per i template HTML.
- Istruzione switchswitch ($value) confronta un valore con un elenco di etichette case ed esegue il codice dalla prima corrispondenza fino a un break. Copre case multipli, fallthrough, default, switch(true) e perché switch usa il confronto debole ==.
- Espressione matchmatch ($x) { 1, 2 => 'low', default => 'other' } confronta un valore con il === stretto, restituisce il risultato del primo ramo che corrisponde e lancia un UnhandledMatchError quando nulla corrisponde. Copre match vs switch, match(true) e match con gli enum.
- Ciclo forfor ($i = 0; $i < 10; $i++) { ... } esegue un blocco un numero stabilito di volte: valore iniziale, condizione verificata prima di ogni passaggio e un incremento. Copre lo scorrimento di un array tramite indice, il conto alla rovescia, i cicli annidati, break e continue.
- Ciclo whilewhile (condizione) { ... } ripete un blocco finché la condizione è vera, verificandola prima di ogni passaggio. do { ... } while (condizione); la verifica dopo, quindi viene sempre eseguito almeno una volta. Copre while (true) con break, la lettura di un file riga per riga e come evitare i cicli infiniti.
- Ciclo foreachforeach ($array as $value) visita ogni elemento di un array, e foreach ($array as $key => $value) ti dà anche la chiave. Copre come ottenere l'indice, modificare i valori per riferimento e la trappola di unset(), break e continue, array annidati, list() in foreach e la costruzione di HTML.
Array
- ArrayUn array PHP è una lista ordinata di valori, ognuno salvato sotto una chiave: $fruits = ['apple', 'banana']; si legge come $fruits[0]. Impara a creare array, leggere e modificare elementi, scorrerli, stamparli e quale funzione per array usare.
- Array associativiUn array associativo PHP salva i valori sotto chiavi a cui dai un nome: $user = ['name' => 'Ada', 'age' => 36]; si legge come $user['name']. Impara ad aggiungere, modificare e rimuovere coppie, scorrere chiavi e valori, ottenere tutte le chiavi o i valori, verificare una chiave e ordinare per chiave o per valore.
- Array multidimensionaliUn array multidimensionale in PHP è un array i cui elementi sono array, letto con una coppia di parentesi per livello: $grid[1][2] o $users[0]['name']. Impara a creare array annidati, leggere e modificare valori profondi, scorrerli con foreach annidati, costruire una tabella HTML, estrarre una colonna e ordinare le righe.
- array_push()array_push($arr, $value) aggiunge uno o più valori in fondo a un array; $arr[] = $value fa lo stesso per un solo valore ed è più veloce. Impara ad aggiungere in fondo, all'inizio o in mezzo a un array, aggiungere una chiave e un valore ed evitare il classico bug del valore restituito.
- count()count($arr) restituisce il numero di elementi di un array PHP, quindi count(['a', 'b', 'c']) vale 3. Impara a contare array annidati con COUNT_RECURSIVE, il rapporto tra sizeof() e count(), come contare i valori che corrispondono e perché count(null) lancia un TypeError da PHP 8.
- in_array()in_array($needle, $haystack) restituisce true quando il valore è nell'array. Passa true come terzo argomento per un controllo stretto, in_array('1', $ids, true), così deve corrispondere anche il tipo. Impara il flag strict, le ricerche senza distinzione tra maiuscole e minuscole, il controllo di più valori, gli array annidati e l'alternativa veloce con isset.
- array_search()array_search($value, $array) restituisce la chiave del primo elemento uguale a $value, oppure false se non ce n'è nessuno. Dato che la chiave può essere 0, verifica sempre il risultato con !== false. Impara le ricerche strette, come trovare ogni corrispondenza, cercare in un array multidimensionale con array_column e le ricerche case-insensitive.
- array_key_exists()array_key_exists('key', $array) restituisce true quando l'array ha quella chiave, anche se il suo valore è null. isset($array['key']) è più veloce ma restituisce false per un valore null. Impara la differenza, key_exists(), le chiavi annidate, il controllo di più chiavi e perché gli oggetti richiedono property_exists().
- array_merge()array_merge($a, $b) unisce più array in uno: i valori con chiavi numeriche vengono accodati e rinumerati, e per le chiavi stringa vince l'array successivo. Scopri in cosa array_merge differisce dall'operatore + e dalla sintassi spread [...$a, ...$b], come unire una lista di array e quando sono più adatti array_merge_recursive o array_replace.
- array_map()array_map($callback, $array) chiama la callback su ogni elemento e restituisce un nuovo array con i risultati. Impara le arrow function, le chiavi, il map di più array insieme e quando array_walk o foreach sono più adatti.
- array_filter()array_filter($array, $callback) tiene gli elementi per cui la callback restituisce true. Impara a rimuovere i valori vuoti, filtrare per chiave con ARRAY_FILTER_USE_KEY, reindicizzare il risultato con array_values e sommare con array_reduce.
- Ordinare arraysort($array) ordina una lista sul posto, asort e ksort ordinano un array associativo per valore o per chiave, e usort ordina con un tuo confronto. Impara tutte queste funzioni, ordina un array multidimensionale per colonna ed evita il classico errore $sorted = sort($arr).
- Rimuovere da un arrayunset($array[$key]) rimuove un elemento per chiave, array_splice rimuove per posizione e rinumera, e array_diff rimuove per valore. Impara ciascuno, come reindicizzare dopo e la trappola di array_search che elimina l'elemento sbagliato.
- array_slice()array_slice($array, $offset, $length) restituisce una copia di una parte di un array senza modificare l'originale. Impara gli offset negativi per gli ultimi elementi, preserve_keys, la paginazione di una lista e la differenza con array_splice.
- array_unique()array_unique($array) rimuove i valori duplicati e tiene la prima occorrenza di ciascuno, con la sua chiave originale. Impara a reindicizzare il risultato, rimuovere i duplicati ignorando maiuscole e minuscole, rendere unico un array multidimensionale e contare o trovare i duplicati.
- array_column()array_column($rows, 'email') restituisce il campo email di ogni riga come array piatto. Impara l'argomento chiave indice, come reindicizzare le righe per id, l'uso con gli oggetti e come trovare una riga con array_search.
- Destrutturazione e list()[$a, $b] = $array assegna i primi due elementi a $a e $b in una riga, e ['name' => $name] = $user fa lo stesso per chiave. list() è la grafia più vecchia. Copre come saltare elementi, scambiare variabili, restituire più valori, destrutturare in foreach e l'operatore spread ...
Stringhe
- explode()explode(',', $string) divide una stringa a ogni virgola e restituisce i pezzi come array. Impara il parametro limit, la divisione per a capo, il trim dei pezzi e quando str_split o preg_split sono lo strumento migliore.
- implode()implode(', ', $array) unisce i valori di un array in una sola stringa con un separatore tra loro. Impara implode con le chiavi, gli array associativi, la costruzione di liste HTML e la differenza tra implode e join.
- str_replace()str_replace($search, $replace, $subject) sostituisce ogni occorrenza di $search con $replace. Impara gli array di valori da cercare e sostituire, il conteggio delle sostituzioni, str_ireplace che ignora le maiuscole e la sostituzione della sola prima occorrenza.
- substr()substr($string, $offset, $length) restituisce una parte di una stringa. Impara gli offset negativi, come ottenere i primi o gli ultimi caratteri, mb_substr per il testo giapponese e altro UTF-8, substr_count e come tagliare un testo con i puntini di sospensione.
- strpos()strpos($haystack, $needle) restituisce la posizione della prima occorrenza di $needle, oppure false se non viene trovata. Impara il controllo !== false, stripos che ignora le maiuscole, l'ultima corrispondenza con strrpos e come trovare ogni occorrenza.
- str_contains()str_contains($haystack, $needle) restituisce true se $needle compare in un punto qualsiasi di $haystack. Impara la versione senza distinzione tra maiuscole e minuscole, str_starts_with e str_ends_with, il controllo di più parole e la versione con strpos per PHP 7.
- trim()trim($string) rimuove spazi, tabulazioni e a capo da entrambe le estremità di una stringa; ltrim() e rtrim() puliscono un solo lato. Impara a rimuovere caratteri specifici, lo spazio giapponese a larghezza piena e ogni valore di un array.
- strlen()strlen($string) restituisce la lunghezza di una stringa in byte; mb_strlen($string) la restituisce in caratteri. Scopri perché il testo giapponese e le emoji danno risposte diverse, come verificare una stringa vuota e come validare la lunghezza dell'input.
- sprintf()sprintf() costruisce una stringa da un formato e dei valori: sprintf('%05.2f', 3.14159) restituisce "03.14". Impara %s, %d e %f, il riempimento con zeri, i decimali fissi, l'allineamento, la numerazione degli argomenti, printf e vsprintf.
- number_format()number_format(1234567.891, 2) restituisce "1,234,567.89": arrotonda ai decimali indicati e aggiunge un separatore delle migliaia. Impara i quattro parametri, i formati europeo e giapponese, come arrotonda e perché il risultato è una stringa.
- A capoPer stampare una nuova riga in PHP, scrivi "\n" tra virgolette doppie oppure usa PHP_EOL. In una pagina web un a capo non si vede, quindi usa <br> o nl2br(). Impara la differenza, perché '\n' tra apici singoli non funziona e come dividere o rimuovere le interruzioni di riga.
- preg_match()preg_match($pattern, $subject, $matches) verifica una stringa con un'espressione regolare e restituisce 1 se corrisponde, 0 altrimenti. Impara i gruppi di cattura, i gruppi con nome, preg_match_all, le ancore, gli schemi di validazione e il modificatore u per UTF-8 e testo giapponese.
- preg_replace()preg_replace($pattern, $replacement, $subject) sostituisce ogni corrispondenza di un'espressione regolare: preg_replace('/\s+/', ' ', $text) riduce gli spazi multipli. Impara i backreference come $1, preg_replace_callback, la rimozione dei caratteri non alfanumerici, limiti e conteggi.
Funzioni
- FunzioniDefinisci una funzione PHP con function name($param) { return $value; }. Impara i valori restituiti, i parametri di default, gli argomenti con nome, il passaggio per riferimento, le dichiarazioni di tipo con strict_types, i tipi nullable e union e gli argomenti variadici ...$args.
- Arrow functionUna arrow function è una funzione anonima di una sola espressione scritta fn($x) => $x * 2. Usa automaticamente le variabili esterne, per valore, senza use. Impara la sintassi, come funziona la cattura, i tipi, le callback per array_map e usort e quando usare invece una closure completa.
- Funzioni anonimeUna funzione anonima (closure) è una funzione senza nome salvata in una variabile: $greet = function ($name) { return "Hi $name"; };. Impara la parola chiave use, la cattura per riferimento, i callable, la sintassi first-class callable strlen(...) e le closure dentro le classi.
- GeneratoriUn generatore è una funzione che usa yield per restituire valori uno alla volta, così foreach può scorrere un milione di elementi senza costruire un array. Impara yield, le chiavi, il risparmio di memoria, le sequenze infinite, yield from, send() e getReturn().
Classi e oggetti
- Classi e oggettiUna classe PHP è un modello dichiarato con `class Name { }`, e `new Name()` crea un oggetto a partire da essa. Impara proprietà, metodi, `$this`, public/private/protected, proprietà tipizzate e readonly, `__toString` e perché assegnare un oggetto non lo copia.
- CostruttoriUn costruttore PHP è il metodo `__construct()`, eseguito automaticamente quando scrivi `new ClassName(...)`. Impara la promozione delle proprietà nel costruttore, gli argomenti di default e con nome, la validazione, `parent::__construct()` e come simulare più costruttori con metodi factory statici.
- EreditarietàIn PHP una classe eredita da un'altra con `class Dog extends Animal`: ottiene le proprietà e i metodi public e protected del padre, può sovrascriverli e può comunque chiamare l'originale con `parent::method()`. Impara override, protected, final, instanceof e la trappola dei metodi privati.
- InterfacceUn'interfaccia PHP elenca i metodi che una classe promette di avere: `interface Shape { public function area(): float; }`, e `class Circle implements Shape` deve allora definire `area()`. Impara i type hint con le interfacce, l'implementazione di più interfacce, le costanti delle interfacce, l'estensione delle interfacce, le interfacce predefinite come Countable e interfaccia vs classe astratta.
- Classi astratteUna classe astratta PHP si dichiara `abstract class Name` e non può essere istanziata: esiste per essere estesa. Può contenere proprietà, un costruttore e metodi completi, più metodi `abstract` senza corpo che ogni classe figlia deve implementare.
- TraitUn trait PHP è un blocco riutilizzabile di metodi e proprietà che copi in una classe con `use TraitName;`. Impara l'uso di più trait, la risoluzione dei conflitti di nome con `insteadof` e `as`, i membri astratti e statici dei trait, quale metodo vince e trait vs interfaccia vs classe astratta.
- EnumUn enum PHP (8.1+) è un tipo con un elenco fisso di valori: `enum Status: string { case Active = 'active'; }`. Impara gli enum puri e backed, `->value` e `->name`, la conversione con `from()` e `tryFrom()`, l'elenco dei case con `cases()`, metodi, costanti, interfacce ed enum in `match`.
- Metodi staticiUn metodo o una proprietà `static` appartiene alla classe, non a un oggetto: lo chiami con `ClassName::method()` e lo leggi con `ClassName::$count`, senza bisogno di `new`. Impara `self::` vs `static::` (late static binding), `new static`, le variabili statiche dentro le funzioni e quando static è lo strumento sbagliato.
- NamespaceUn namespace PHP raggruppa classi, funzioni e costanti sotto un prefisso: `namespace App\Models;` in cima a un file, poi `use App\Models\User;` altrove per riferirsi alla classe con il nome breve. Impara i nomi completamente qualificati, gli alias con `use ... as`, `use function`, la barra rovesciata iniziale per le classi globali e l'autoloading PSR-4.
Errori ed eccezioni
- try catchIn PHP il codice che potrebbe fallire va in un blocco `try { }`, e `catch (Exception $e) { }` viene eseguito se lancia un'eccezione, con il motivo in `$e->getMessage()`. Impara a catturare più tipi di eccezione, `finally`, perché `catch (Exception)` non cattura `TypeError` e `DivisionByZeroError` (cattura `Throwable`), il rilancio e un gestore globale.
- EccezioniIn PHP lanci un'eccezione con `throw new Exception('message');`, e chi chiama la legge con `$e->getMessage()` in un blocco `catch`. Impara le classi di eccezione predefinite, come scrivere eccezioni personalizzate, `getCode()`, `getLine()` e `getPrevious()`, `throw` come espressione e gli errori che PHP lancia da solo come `ValueError` e `TypeError`.
Dati, file e web
- json_encode()json_encode($value) trasforma un array, un oggetto o uno scalare PHP in una stringa JSON. Gli array associativi diventano oggetti JSON, le liste diventano array JSON, e flag come JSON_PRETTY_PRINT e JSON_UNESCAPED_UNICODE controllano l'output.
- json_decode()json_decode($json, true) trasforma una stringa JSON in un array associativo PHP; senza true ottieni oggetti stdClass. Impara i valori annidati, la gestione degli errori con JSON_THROW_ON_ERROR, json_validate() e perché json_decode restituisce null.
- date()date('Y-m-d') restituisce la data di oggi come stringa, e date('Y-m-d', $timestamp) formatta qualsiasi timestamp Unix. Impara time(), mktime(), strtotime(), DateTimeImmutable, come aggiungere giorni, la differenza tra due date e i fusi orari, con esempi eseguibili.
- Formato dataUn formato data PHP è una stringa di lettere come 'Y-m-d H:i:s', dove Y è l'anno a 4 cifre, m il mese, d il giorno, H l'ora, i i minuti e s i secondi. Ecco ogni carattere di formato con un esempio, più l'escape, ISO 8601, le date giapponesi e la conversione da un formato a un altro.
- file_get_contents()file_get_contents('notes.txt') legge un intero file e lo restituisce come un'unica stringa, oppure false se non ci riesce. La sua compagna file_put_contents() scrive una stringa in un file, e file() restituisce le righe come array.
- fopen()fopen('data.txt', 'r') apre un file e restituisce un handle, oppure false in caso di errore. Leggi dall'handle con fgets() o fread(), scrivi con fwrite(), chiudilo con fclose(). La modalità ('r', 'w', 'a', 'x', 'c' e le loro forme con +) decide cosa puoi fare.
- include e requireinclude 'header.php'; esegue un altro file PHP in quel punto, come se il suo codice fosse incollato lì. require fa lo stesso ma ferma lo script con un errore fatale quando il file manca, mentre include dà solo un warning e prosegue. include_once e require_once caricano un file solo la prima volta.
- FormUn form PHP invia i dati a se stesso con <form method="post">, e lo script legge i campi da $_POST['name'] quando $_SERVER['REQUEST_METHOD'] è 'POST'. Impara la validazione, i messaggi di errore accanto ai campi, come mantenere i valori inseriti, checkbox e select e l'escape dell'output.
- $_GET e $_POST$_GET contiene la query string dell'URL (?page=2 dà $_GET['page']) e $_POST contiene i campi di un form inviato con method="post". Impara a leggerli entrambi in sicurezza, costruire link con http_build_query, verificare $_SERVER['REQUEST_METHOD'] e scegliere tra GET e POST.
- htmlspecialchars()htmlspecialchars($text) trasforma in entità i cinque caratteri che hanno un significato nell'HTML (& < > " '), così l'input dell'utente viene mostrato come testo invece di essere eseguito come markup. Impara ENT_QUOTES, l'escape degli attributi, la doppia codifica, htmlentities e strip_tags.
- Sessioni e cookieChiama session_start() in cima a ogni pagina, poi salva i valori in $_SESSION['key']; PHP li tiene sul server e riconosce il visitatore tramite un cookie. setcookie('name', 'value', $options) salva un piccolo valore nel browser, che si rilegge da $_COOKIE. Impara login, logout, messaggi flash, opzioni dei cookie e impostazioni di sicurezza.
- password_hash()Calcola l'hash di una password con password_hash($password, PASSWORD_DEFAULT), salva il risultato di 60 caratteri e verifica un login con password_verify($password, $hash). Scopri perché l'hash cambia ogni volta, il cost, password_needs_rehash, Argon2id e perché md5 e sha1 sono sbagliati per le password.
- filter_var()filter_var($value, FILTER_VALIDATE_EMAIL) restituisce il valore se è valido e false altrimenti; FILTER_VALIDATE_INT, FILTER_VALIDATE_URL, FILTER_VALIDATE_BOOL e FILTER_VALIDATE_IP funzionano allo stesso modo. Impara le opzioni (min_range, default), i flag, i filtri di sanitizzazione e la trappola false vs 0.
- PDOPDO è il livello di accesso ai database di PHP: connettiti con new PDO('mysql:host=localhost;dbname=shop;charset=utf8mb4', $user, $pass), poi esegui ogni query con valori tramite prepare() ed execute([$value]). Impara connessione, prepared statement, lettura delle righe, insert, transazioni e WHERE IN.
- ComposerComposer è il gestore di pacchetti di PHP: composer require vendor/package scarica una libreria in vendor/, la registra in composer.json, e require 'vendor/autoload.php' la carica. Impara a installare Composer, composer.json, i vincoli di versione, install vs update e l'autoloading PSR-4 per le tue classi.
Debug e pratica
- var_dump() e print_r()print_r($array) stampa un array in forma leggibile, var_dump($value) mostra anche ogni tipo e lunghezza, e var_export stampa codice PHP valido. Scopri quando usare ciascuno, come ottenere print_r come stringa e come stampare in modo leggibile nell'HTML con <pre>.
- Domande da colloquio24 domande da colloquio PHP con risposte brevi e corrette per PHP 8, da == vs === e isset vs empty ai riferimenti in foreach, self vs static, generatori, SQL injection e hashing delle password. La maggior parte delle risposte ha codice che puoi eseguire e modificare.