Operatori
PHP Manual

Operatori di controllo errori

PHP supporta un operatore di controllo dell'errore: il carattere at (@). Quando prefisso ad una espressione in PHP, qualunque messaggio di errore che possa essere generato da quella espressione sarà ignorato.

Se è stata assegnata una funzione personalizzata di gestione degli errori con set_error_handler() questa verrà comunque chiamata, ma questa funzione può (e dovrebbe) chiamare error_reporting() che restituirà 0 quando la chiamata che ha attivato l'errore era preceduta da un @.

Se la caratteristica track_errors è abilitata, qualsiasi messaggio di errore generato dall'espressione sarà salvato nella variabile globale $php_errormsg. Questa variabile sarà sovrascritta ad ogni errore, quindi va controllata spesso per poterla utilizzare.

<?php
/* Errore di file intenzionale */
$my_file = @file ('file_inesistente') or
    die (
"Apertura del file fallita: l'errore è '$php_errormsg'");

// questo funziona per qualsiasi espressione, non solo funzioni:
$value = @$cache[$key];
// non verrà generata una notifica se l'indice $key non esiste.

?>

Nota: L'operatore @ funziona solo sulle espressioni. Una semplice regola è: se si può ottenere il valore di qualcosa, allora si può anteporre ad esso l'operatore @. Per esempio, si può anteporre a variabili, funzioni e chiamate ad include, costanti, e così via. non si può anteporre a definizioni di funzioni o classi, o strutture condizionali come if e foreach, e così via.

Vedere anche error_reporting() e la sezione del manuale Gestione degli errori e funzioni di log.

Avviso

In effetti, il prefisso operatore di controllo dell'errore "@" disabiliterà la restituzione di errori per errori critici che interrompono l'esecuzione dello script. Tra le altre cose, questo significa che se si usa "@" per sopprimere errori da una certa funzione ed essa non è disponibile oppure è stata scritta male, lo script terminerà senza dare indicazioni sul motivo.


Operatori
PHP Manual