2009-05-30 10 views
9

Recentemente sono passato a una nuova configurazione che sta segnalando Annunci PHP; il mio codice ha funzionato bene senza che questi avvisi siano stati corretti, ma mi chiedo se abbia senso aggiustarli tutti e lasciarli segnalati o semplicemente ignorarli e disattivare la segnalazione.Il PHP "Avvisi" deve essere segnalato e corretto?

Quali sono alcune opinioni diverse su questo? Esistono buone pratiche associate alle notifiche?

risposta

18

Gli errori sono errori. Devono essere risolti prima che il tuo codice funzioni.

Le avvertenze sono avvertenze. Ti avvertono che quello che stai facendo è probabilmente una cattiva idea, anche se al momento funziona (o sembra funzionare) per te. Quindi anche loro dovrebbero probabilmente essere riparati.

Avvisi sono avvisi. Dovrebbero essere notati. Da qui il nome. Potrebbe non essere un problema che il tuo codice genera un po ', ma è qualcosa che dovresti esaminare e giudicare caso per caso.

E, naturalmente, è molto più semplice notare le notifiche se non ne ottieni 400. Quindi c'è un grande vantaggio nel cercare di eliminarli. Rende più visibili quelli che non hai ancora notato.

0

In un ambiente di produzione NON DEVI visualizzare QUALSIASI avviso.

Anche in caso di blocco dell'applicazione.

È solo un suggerimento di sicurezza.

Se si passa da una vecchia versione di php a una recente, è necessario dare almeno un'occhiata all'annuncio per sapere di cosa si tratta. A volte si tratta di sicurezza, a volte basta informarti che questa funzione è deprecata.

Si dovrebbe anche occuparsi delle comunicazioni, tranne se si sa veramente cosa si sta facendo.

+0

Questa domanda riguarda [error_reporting] (http://www.php.net/manual/en/function.error-reporting.php) non [display_errors] (http://www.php.net/manual/ it/errorfunc.configuration.php # ini.display-errori). – dotancohen

2

Sono chiamati avvisi perché il tuo programma funziona ancora - Ma significa che hai fatto qualcosa di sbagliato. Risolvilo se hai il tempo di farlo e se vuoi che il codice sia "pulito" e possibilmente buono. Il tuo codice non è buono se ricevi degli avvertimenti.

... e le avvertenze possono portare a errori:

Se si ottiene un avvertimento variabile non definita significa che non è stata selezionata per l'esistenza di una variabile. Cosa succede se si utilizza questa variabile in una query MySQL? Fallirà e interromperà il tuo programma.

Non visualizzare gli avvisi su un sito Web in tempo reale. Presentano parti del tuo codice all'esterno.

Il modo migliore è codificare in modo da evitare avvisi. ;)

9

Sì, eliminerei le notifiche da qualsiasi codice PHP che scrivo, anche se si tratta semplicemente di disattivare l'ID avviso specifico dopo averne esaminato tutte le istanze. Gli avvisi (ad esempio indice indefinito, variabile inizializzata) indicano molto spesso una situazione che hai dimenticato di anticipare. Dovresti investigare su ciascuno di essi, eliminare i problemi reali, quindi eventualmente sopprimere gli altri (con un commento che spiega perché).

Il manuale PHP afferma "I messaggi di AVVISO ti avvisano di uno stile sbagliato", quindi suppongo che la "migliore pratica" ufficiale sia più o meno quella che ho delineato. Segui il buono stile, a meno che tu non abbia una valida ragione per non farlo.

3

Dipende da quali avvisi - la maggior parte delle notifiche sono prove di cattivi odori di codice - indici di array non definiti ecc. Se si sopprime un avviso, lasciare un commento accanto ad esso indicando perché si ritiene che debba essere soppresso.

PHP.net Dice:

Nota: L'abilitazione E_NOTICE durante sviluppo ha dei benefici. Per scopi di debug : i messaggi di AVVISO ti informeranno sui possibili errori nel codice . Ad esempio, l'utilizzo dei valori non assegnati è avvisato. È estremamente utile per trovare errori di battitura e per risparmiare tempo per il debug.AVVISO I messaggi ti avvisano dello stile errato . Ad esempio, $ arr [articolo] è meglio da scrivere come $ arr ['articolo'] poiché PHP tenta di trattare "articolo" come costante . Se non è una costante, PHP presuppone che sia un indice di stringa per l'array .

Tratterei ogni avviso come una opportunità gratuita per migliorare il codice. :)

0

Le cose come cercare di accedere a variabili non definite e indici indefiniti sono errori gravi nel libro di ogni programmatore serio, quindi davvero non capisco perché hanno scelto di essere qualcosa che si può notare e scrollare le spalle e andare via. Ogni altro compilatore che conosco abortirebbe semplicemente il programma in quel punto esatto.

Io li sistemo sempre, sono quasi sempre causa di errori peggiori.

Problemi correlati