Il PHP prevede anche l'peratore '@' che, inserito prima del nome
di una funzione, permette di disabilitare i messaggi di errore.
Se nel file php.ini è abilitato il parametro
track_errors = 1
allora l'ultimo messaggio di errore verrà registrato nella variabile
globale $php_errormsg.
Vediamo un esempio:
if(!@copy($file_1, $file_2)
{
echo "<h1>Errore</h1><p>Impossibile copiare
il file $file_1</p>\n";
}
Se l'operazione di copia fallisce verrà visualizzato solo il messaggio
personalizzato.
ATTENZIONE! Se si utilizza l'operatore '@'
verranno disabilitati anche i messaggi che indicano errori di sintassi, funzioni
non dichiarate e errori di inclusione. Usatelo con cura!
Come nel linguaggio C, anche PHP supporta gli operatori di incremento e decremento.
Pre-incremento
++$a; // Incrementa $a di 1 e ritorna il valore di $a incrementato
Post-incremento
$a++; // Ritorna $a e incrementa $a di 1
Pre-decremento
--$a; // Decrementa $a di 1 e ritorna il valore di $a decrementato
Post-decremento
$a--; // Ritorna $a e decrementa $a di 1
La maggior parte delle funzioni richiede degli argomenti; ad esempio la funzione
checkdate($m, $d, $y) richiede tre argomenti.
Normalmente il PHP passa alla funzione una copia di ogni valore passato come
argomento; quando la funzione ritorna il risultato le copie vengono eliminate;
questo significa che la funzione non cambia il valore della variabile.
Questo modo di operare si chiama passaggio "by value" ovvero per valore,
poiché alla funzione viene passato solo il valore dell'argomento. Per
default le funzioni operano in questo modo, ma in alcune circostanze può
essere utile operare direttamente sulle variabili invece che su una copia del
loro valore. Vediamo nel prossimo paragrafo come si fa.
Passare alla funzione la variabile stessa invece che una copia del suo valore
si chiama passaggio "by reference" ovvero per riferimento. In realtà
alla funzione non viene passata la variabile, ma un puntatore ad essa, in altre
parole un alias della variabile stessa.
Per dire alla funzione che deve lavorare "by reference" e non "by
value" si usa l'operatore '&'
Vediamo un esempio:
function raddoppia(&$x)
{
$x = $x * 2;
}
$x = 5;
echo $x;
raddoppia $x;
echo $x; // stampa "10" sulla pagina
ATTENZIONE! Potete usare l'operatore '&'
quando definite la funzione oppure quando la chiamate.
L'operatore '&' può essere usato anche per fare delle
assegnazioni:
$miavar_2 = $miavar_1; // adesso $miavar_1 e $miavar_2 puntano alla
stessa variabile.
NOTA: Fate attenzione a non confondere gli operatori '&'
e '&&'
Per chi programma in Visual Basic:
L'operatore '&' ha la stessa funzione della parola chiave ByRef
di Visual Basic.
Per chi programma in JavaScript:
In JavaScript non esiste nulla di simile poiché il tipo di passaggio
dei parametri viene deciso automaticamente: i tipi semplici (stringhe, interi)
vengono passati "by value", i tipi complessi come array e oggetti
vengono passati "by reference".
Per chi programma in Perl:
L'operatore '&' è l'equivalente dell'operatore '\'
in Perl.
Indice | Pagina seguente >>