Gestione delle Variabili in PHP
Scopri come creare, ispezionare, copiare e rimuovere variabili in PHP: isset, gettype, settype, riferimenti e variabili dinamiche.
Introduzione
La gestione delle variabili è l'insieme delle tecniche usate per creare, ispezionare, copiare e rimuovere i valori con cui lavora uno script PHP. Questa pagina va oltre la semplice assegnazione di un valore: copre la verifica dell'esistenza di una variabile (isset), la ricerca e la modifica del suo tipo (gettype / settype), la creazione di riferimenti e le funzionalità più dinamiche offerte da PHP — variabili variabili e funzioni variabili.
Se non hai mai dichiarato una variabile PHP prima d'ora, inizia con PHP Variables e PHP Data Types, poi torna qui per le tecniche di gestione.
Dichiarazione e assegnazione di variabili
In PHP il nome di una variabile inizia con il simbolo del dollaro ($) seguito da una lettera o un underscore. Non è necessario dichiarare un tipo — PHP lo deduce dal valore assegnato tramite l'operatore =.
<?php
$name = "John"; // string
$age = 30; // integer
$price = 19.99; // float
$active = true; // booleanPHP è tipizzato dinamicamente: la stessa variabile può contenere una stringa ora e un numero in seguito. La variabile assume semplicemente il tipo di ciò che è stato assegnato per ultimo.
Interpolazione di stringhe
All'interno di stringhe con virgolette doppie (e heredoc) PHP sostituisce una variabile con il suo valore. Le stringhe con virgolette singole vengono prese letteralmente e non eseguono l'interpolazione.
Verifica e rimozione di variabili
Prima di leggere una variabile che potrebbe non esistere, verificane l'esistenza. Queste tre funzioni sono il cuore della gestione sicura delle variabili:
| Funzione | Restituisce true quando... |
|---|---|
isset($var) | la variabile esiste e non è null |
empty($var) | la variabile non è impostata, è null, 0, "", "0", false o [] |
unset($var) | (nessun valore restituito) distrugge la variabile così che isset diventi false |
<?php
$user = null;
var_dump(isset($user)); // bool(false) — null counts as "not set"
$count = 0;
var_dump(empty($count)); // bool(true) — 0 is "empty"
$temp = 10;
unset($temp);
var_dump(isset($temp)); // bool(false) — destroyedisset è la funzione di controllo più usata, specialmente con le superglobali come $_GET e $_POST dove una chiave potrebbe essere assente.
Ispezione e modifica dei tipi
Poiché PHP deduce i tipi, a volte è necessario sapere quale tipo ha attualmente un valore, o forzare una conversione.
<?php
$price = 19.99;
echo gettype($price); // double (PHP's name for float)
$input = "42";
settype($input, "integer");
echo $input + 8; // 50 — now a real integer, not the string "42"Usa gettype per ottenere un nome di tipo leggibile e settype (o un cast come (int)) per convertire sul posto. Per i confronti, preferisci le funzioni type-aware is_int(), is_string(), is_array(), e così via.
Gestione avanzata delle variabili
Una volta acquisite le basi, PHP offre altre tre tecniche dinamiche. Usale con parsimonia — sono potenti ma possono compromettere la leggibilità.
Riferimenti a variabili
Un riferimento fa sì che due nomi puntino allo stesso valore sottostante. Si assegna con =& e qualsiasi modifica tramite un nome è visibile attraverso l'altro.
<?php
$count = 1;
$alias =& $count; // $alias is now another name for $count
$alias = 5;
echo $count; // 5 — changed through the referenceI riferimenti sono utili soprattutto quando si passano argomenti alle funzioni per riferimento (function f(&$x)), consentendo alla funzione di modificare la variabile del chiamante.
Variabili variabili
Una variabile variabile usa il valore di una variabile come nome di un'altra. La sintassi $$ legge la variabile interna per costruire il nome esterno.
<?php
$var = "greeting";
$$var = "Hello"; // creates $greeting
echo $greeting; // HelloQuesto è occasionalmente utile per nomi di campo dinamici, ma un array associativo è quasi sempre più chiaro e sicuro.
Funzioni variabili
Se una variabile stringa contiene il nome di una funzione, aggiungendo () si chiama quella funzione dinamicamente.
<?php
$fn = "strlen";
echo $fn("Hello World"); // 11Questo è utile per semplici tabelle di dispatch e callback. PHP moderno preferisce generalmente callable di prima classe o closure, ma le funzioni variabili rimangono valide e veloci.
Buone pratiche
- Usa nomi significativi.
$countero$totalPricedocumentano l'intento molto meglio di$xo$tmp. - Inizializza prima dell'uso. Leggere una variabile non definita genera un avviso; imposta un valore predefinito o proteggi con
isset(). - Evita i globali. Passa i valori come argomenti alle funzioni o incapsula lo stato in oggetti invece di affidarti a
global. Vedi Variables Scope per capire perché l'isolamento dello scope è importante. - Preferisci gli array alle variabili variabili. Sono più facili da iterare, debuggare e comprendere.
- Usa le dichiarazioni di tipo. I parametri tipizzati (
function setAge(int $age)) intercettano gli errori precocemente e rendono il codice autodocumentante.
Riepilogo
La gestione delle variabili in PHP è molto più della semplice assegnazione: include la verifica dell'esistenza con isset/empty, la rimozione di valori con unset, l'ispezione e la conversione dei tipi con gettype/settype, e gli strumenti dinamici — riferimenti, variabili variabili e funzioni variabili. Affidati alle tecniche semplici ed esplicite nel lavoro quotidiano e riserva quelle dinamiche ai rari casi che le richiedono davvero.