php - ver - ¿Cuál es la configuración de error_reporting() recomendada para el desarrollo? ¿Qué pasa con E_STRICT?
quitar las notice en php (8)
En versiones PHP más nuevas, E_ALL incluye más clases de errores. Desde PHP 5.3, E_ALL incluye todo excepto E_STRICT. En PHP 6, incluso incluirá eso. Esta es una buena sugerencia: es mejor ver más mensajes de error en lugar de menos.
Lo que está incluido en E_ALL está documentado en la página de constantes predefinidas de PHP en el manual en línea.
Personalmente, creo que no importa mucho si usas E_STRICT. Ciertamente no le hará daño, especialmente porque puede evitar que escriba scripts que tienen una pequeña posibilidad de romperse en versiones futuras de PHP. Por otro lado, en algunos casos, los mensajes estrictos pueden ser demasiado ruidosos, tal vez especialmente si tiene prisa. Sugiero que lo enciendas por defecto y lo apagues cuando se vuelva molesto.
Normalmente uso E_ALL
para ver cualquier cosa que PHP pueda decir sobre mi código para intentar mejorarlo.
Me acabo de dar cuenta de una constante de error E_STRICT
, pero nunca la he usado ni la he escuchado, ¿es ésta una buena E_STRICT
para el desarrollo? El manual dice:
Avisos de tiempo de ejecución. Habilítelo para que PHP sugiera cambios a su código que garantizarán la mejor interoperabilidad y compatibilidad de su código.
Entonces, me pregunto si estoy usando el mejor nivel de error_reporting
con E_ALL
o ¿sería eso junto con E_STRICT
el mejor? ¿O hay alguna otra combinación que aún deba aprender?
No hablando estrictamente de error_reporting, recomiendo utilizar cualquier IDE que muestre automáticamente errores de análisis y problemas técnicos comunes (por ejemplo, asignación en condición).
Zend Studio para Eclipse tiene esta característica habilitada por defecto, y desde que comencé a usarla, me ha ayudado mucho a detectar errores antes de que ocurran.
Por ejemplo, tenía este fragmento de código donde almacenaba algunos datos en la variable $GLOBALS
, pero inadvertidamente escribí $_GLOBALS
. Los datos nunca se almacenaron en caché, y nunca supe si Zend no me dijo: "Oye, esta $_GLOBALS
aparece solo una vez, eso podría ser un error".
Use lo siguiente en php.ini:
error_reporting = E_ALL | E_STRICT
También debe instalar Xdebug , puede resaltar sus errores en cegar colores brillantes e imprimir información detallada útil.
Nunca deje ningún error o aviso en su código, incluso si es inofensivo.
ini_set ("display_errors", "2"); ERROR_REPORTING (E_ALL);
Puede usar error_reporting = -1
Siempre constará de todos los bits (incluso si no están en E_ALL)
En mi opinión, cuanto más alto establezca el nivel de informe de errores en la fase de desarrollo, mejor.
En un entorno en vivo, desea un conjunto ligeramente reducido (pero solo ligeramente) reducido, pero desea que se registre en algún lugar que el usuario no pueda ver (prefiero syslog
).
http://php.net/error_reporting
E_ALL | E_STRICT
E_ALL | E_STRICT
para desarrollo con PHP antes de 5.2.0.
5.2 introduce E_RECOVERABLE_ERROR
y 5.3 introduce E_DEPRECATED
y E_USER_DEPRECATED
. Probablemente quieras activarlos si estás ejecutando una de esas versiones.
Si quisiera usar números mágicos, podría simplemente establecer el valor error_reporting
valor bastante alto de 2^n-1
, por ejemplo, 16777215
, y eso realmente 1..n
todos los bits entre 1..n
. Pero no creo que usar números mágicos sea una buena idea ...
En mi opinión, PHP ha dejado caer un poco el balón al hacer que E_ALL
no sea realmente todo. Pero aparentemente se va a solucionar en PHP 6 ...
En PHP 5, las cosas cubiertas por E_STRICT
no están cubiertas por E_ALL
, por lo que para obtener la mayor cantidad de información, debe combinarlas:
error_reporting(E_ALL | E_STRICT);
En PHP 5.4, E_STRICT
se incluirá en E_ALL
, por lo que puede usar simplemente E_ALL
.
También puedes usar
error_reporting(-1);
que siempre habilitará todos los errores. Cuál es más semánticamente correcto como:
error_reporting(~0);
Dependiendo de sus planes de soporte a largo plazo para este código, la E_STRICT
errores con E_STRICT
habilitada puede ayudar a que su código continúe funcionando en un futuro lejano, pero probablemente sea excesivo para el uso diario. Hay dos cosas importantes que E_STRICT
tener en cuenta E_STRICT
:
- Según el manual , la mayoría de los errores de
E_STRICT
se generan en tiempo de compilación, no en tiempo de ejecución. Si está aumentando el nivel de error aE_ALL
dentro de su código (y no a través de php.ini ), es posible que nunca vea los errores deE_STRICT
todos modos. -
E_STRICT
está dentro deE_ALL
bajo PHP 6, pero no bajo PHP 5. Si actualiza su servidor a PHP6, y tieneE_ALL
configurado como se describe en el n. ° 1 anterior, comenzará a ver errores deE_STRICT
sin requerir ningún cambio adicional de su parte.