Il @
operator dice a PHP per sopprimere i messaggi di errore, in modo che essi non verranno mostrati.
Ad esempio, utilizzando:
$result = mysql_query("this is an invalid query");
si tradurrebbe in un avvertimento viene mostrato, che indica che la query MySQL non è valido, mentre
$result = @mysql_query("this is still an invalid query");
no.
Si noti, tuttavia, che si tratta di una pratica di programmazione pessima in quanto non fa scomparire l'errore, ma li nasconde e rende il debug molto più difficile dal momento che non si riesce a vedere cosa c'è di veramente sbagliato nel codice .
Invece di usare @
, è necessario disattivare error_reporting
e display_errors
solo display_errors
in php.ini
è una brutta, brutta cosa. Non usarlo mai ed eliminare tutti quelli che trovi. –
Non dire "mai". Posso pensare ad un particolare esempio con ldap quando si testano le credenziali di un utente. Se le credenziali falliscono, viene stampato un errore e non può essere intrappolato con un try/catch. L'unica cosa che puoi fare è testare il risultato. Mentre in genere sono d'accordo con te, ci sono delle eccezioni. – Brad