Qual è l'impostazione error_reporting() consigliata per lo sviluppo?E che dire di E_STRICT?

StackOverflow https://stackoverflow.com/questions/74847

  •  09-06-2019
  •  | 
  •  

Domanda

In genere utilizzo E_ALL per vedere tutto ciò che PHP potrebbe dire sul mio codice per provare a migliorarlo.

Ho appena notato una costante di errore E_STRICT, ma non ne hai mai usato o ne hai mai sentito parlare, è una buona impostazione da utilizzare per lo sviluppo?Il manuale dice:

Avvisi in fase di esecuzione.Abilita PHP per suggerire modifiche al tuo codice che garantiranno la migliore interoperabilità e compatibilità futura del tuo codice.

Quindi mi chiedo se sto usando il meglio error_reporting livello con E_ALL o sarebbe insieme a quello E_STRICT Sii il migliore?Oppure c'è qualche altra combinazione che devo ancora imparare?

È stato utile?

Soluzione

In PHP 5, le cose trattate da E_STRICT non sono coperti da E_ALL, quindi per ottenere il maggior numero di informazioni è necessario combinarli:

 error_reporting(E_ALL | E_STRICT);

In PHP 5.4, E_STRICT sarà incluso in E_ALL, quindi puoi usare solo E_ALL.

Puoi anche usare

error_reporting(-1);

che consentirà sempre Tutto errori.Che è semanticamente più corretto in quanto:

error_reporting(~0);

Altri suggerimenti

Utilizzare quanto segue in php.ini:

error_reporting = E_ALL | E_STRICT

Inoltre dovresti installare Xdebug, può evidenziare gli errori nell'accecare i colori brillanti e stampare informazioni dettagliate utili.

Non lasciare mai alcun errore o avviso nel tuo codice, anche se è innocuo.

A mio avviso, più alto è il livello di segnalazione degli errori in fase di sviluppo, meglio è.

In un ambiente live, vuoi un set leggermente (ma solo leggermente) ridotto, ma vuoi che siano registrati da qualche parte in modo che non possano essere visti dall'utente (preferisco syslog).

http://php.net/error_reporting

E_ALL | E_STRICT per lo sviluppo con PHP prima della 5.2.0.

5.2 introduce E_RECOVERABLE_ERROR e 5.3 introduce E_DEPRECATED E E_USER_DEPRECATED.Probabilmente vorrai attivarli se stai utilizzando una di quelle versioni.

Se volessi usare i numeri magici potresti semplicemente impostare il file error_reporting valore ad un valore abbastanza alto di 2^n-1 - Dire, 16777215, e questo accenderebbe davvero tutti i bit intermedi 1..n.Ma non credo che usare i numeri magici sia una buona idea...

A mio parere, PHP ha perso un po' la palla avendo E_ALL non essere davvero tutto.Ma a quanto pare il problema verrà risolto in PHP 6...

Nelle versioni PHP più recenti, E_ALL include più classi di errori.A partire da PHP 5.3, E_ALL include tutto tranne E_STRICT.In PHP 6 includerà presumibilmente anche questo.Questo è un buon suggerimento:è meglio vedere più messaggi di errore piuttosto che meno.

Ciò che è incluso in E_ALL è documentato nel file Costanti predefinite PHP pagina del manuale in linea.

Personalmente, penso che non abbia molta importanza se usi E_STRICT.Certamente non ti farà male, soprattutto perché potrebbe impedirti di scrivere script che hanno una piccola possibilità di rompersi nelle future versioni di PHP.D'altro canto, in alcuni casi i messaggi severi potrebbero risultare troppo rumorosi, soprattutto se si ha fretta.Ti suggerisco di attivarlo per impostazione predefinita e di spegnerlo quando diventa fastidioso.

Puoi usare error_reporting = -1
Sarà sempre composto da tutti i bit (anche se non sono in E_ALL)

A seconda dei piani di supporto a lungo termine per questo codice, è possibile eseguire il debug con E_STRICT abilitato può aiutare il tuo codice a continuare a funzionare in un lontano futuro, ma probabilmente è eccessivo per l'uso quotidiano.Ci sono due cose importanti a riguardo E_STRICT da tenere presente:

  1. Secondo il manuale, maggior parte E_STRICT gli errori vengono generati in fase di compilazione, non in fase di esecuzione.Se stai aumentando il livello di errore a E_ALL all'interno del tuo codice (e non tramite php.ini), potresti non vederlo mai E_STRICT comunque errori.
  2. E_STRICT è contenuto all'interno E_ALL sotto PHP 6, ma non sotto PHP 5.Se aggiorni il tuo server a PHP6 e hai E_ALL configurato come descritto al punto 1 sopra, inizierai a vedere E_STRICT errori senza richiedere ulteriori modifiche da parte tua.

Non parlando strettamente di error_reporting, lo farei fortemente suggerire di utilizzare qualsiasi IDE che mostri automaticamente errori di analisi e problemi comuni (ad esempio, assegnazione in condizione).

Zend Studio for Eclipse ha questa funzione abilitata per impostazione predefinita e da quando ho iniziato a usarla mi ha aiutato molto a individuare gli errori prima che si verifichino.

Ad esempio, avevo questo pezzo di codice in cui stavo memorizzando nella cache alcuni dati nel file $GLOBALS variabile, ma ho inavvertitamente scritto $_GLOBALS Invece.I dati non sono mai stati memorizzati nella cache e non l'avrei mai saputo se Zend non mi avesse detto:"Ehi, questo $_GLOBALS appare solo una volta, potrebbe essere un errore".

ini_set("visualizzazione_errori","2");ERRORE_REPORTING(E_ALL);

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top