2010-03-01 17 views
6

¿Se considera una mala práctica dejar que die() viva en un entorno de producción? Acabo de leer este artículo http://www.phpfreaks.com/blog/or-die-must-die, donde el autor confía en las personas que usan tal cosa en un entorno de producción. Entonces, ¿no debería codificar de esta manera:PHP: ¿Morir() debe morir?

$connection = mysql_connect($db_host, $db_username, $db_password); 
if (!$connection){ 
    die ("Could not connect to the database."); 
} 

¿Cómo se codifica?

+2

Es una mala práctica mostrar a los usuarios finales los errores de la base de datos; estos deben registrarse de alguna forma y mostrarse un error genérico para los usuarios. –

+2

Por cierto, ¡el mejor título de tema de todos los tiempos! –

+1

Consulte http://stackoverflow.com/questions/2130105/should-you-always-end-mysql-queries-with-or-die/2130127#2130127 – LiraNuna

Respuesta

3

Usted no muere cada vez que comete un error, ¿verdad? ¿Por qué debería hacer tu aplicación?

la forma correcta es interceptar errores y procesarlas de una manera dependiente del contexto, por ejemplo

try { 
    application goes here 

    $conn = mysql_connect(...) 
    if(!$conn) 
     throw .... 
    .... 
} catch(Exception $err) { 
    if(PRODUCTION) { 
     log error 
     say something nice 
    } 
    if(DEBUG) { 
     var_dump($err); 
    } 
} 
+1

Una pregunta subjetiva. ¿Por qué prefiere subir y atrapar una excepción en lugar de manejar en la condición 'if (! $ Conn)'? –

+1

Enrico, porque las excepciones son más adecuadas para salir del flujo estándar del programa y pasar el control al código de manejo de errores. También es una forma más robusta de 'fallar antes': si en cambio usted confía en las condiciones if/else en todas partes, debe recordar cada vez que debe llamar a las funciones correctas para finalizar la ejecución. –

3

die() es una declaración muy áspera ... Útil (bastante) en la etapa desarrollador, me pareció mal en la etapa de producción.

Debe analizar, controlar y registrar errores fatales, y mostrar mensajes adecuados como "Es imposible conectarse al servidor, inténtelo en unos minutos o escriba a [email protected] para notificar el problema".

1

bien en un enivornment productiva, nunca se debe exponer cualquier error/información sobre el sistema hacia el exterior mundo.

Importante es registrar todos los errores. Si está hablando de un sitio web, enviaría un HTTP status 500 como respuesta.

Cuestiones relacionadas