2008-09-26 7 views
5

Soy nuevo en PHP y estoy confundido al ver algunos ejemplos llamando a una función con un prefijo @ como @mysql_ping().PHP alias @ function

¿Para qué sirve? Google/búsqueda no es de mucha ayuda ya que @ se descarta y 'alias' no es lo suficientemente buena palabra clave.

Respuesta

15

@ suprime errores, advertencias y avisos.

Puede usarlo con un buen propósito si lo complementa con un error handler personalizado o con la verificación de la variable $ php_errormsg para que pueda manejar los errores correctamente.

En mi experiencia, este uso correcto no se ve mucho y en su lugar se usa mucho en el mal sentido, solo para ocultar los errores sin actuar sobre ellos.

Más información en mensajes de error http://www.php.net/manual/en/language.operators.errorcontrol.php

+0

Bueno perezoso ... Digamos que es útil para una secuencia de comandos "se ejecute una vez, tirar a la basura". En cualquier caso, es una mala práctica. –

+2

Es terriblemente útil para suprimir avisos de error si de lo contrario tiene un controlador de errores en su lugar. – eyelidlessness

+0

"Generalmente es utilizado por programadores perezosos que no quieren verificar los códigos de error" - Completamente incorrecto. @ es exactamente cómo hace PHP su "try/catch" http://www.php.net/manual/en/language.operators.errorcontrol.php – Havenard

2

La búsqueda de "php at symbol" sugiere que PHP no muestre los mensajes de error que causa la llamada.

3

Suprime la salida de mensajes de error. Contrariamente a otro comentarista aquí, creo que es una buena práctica de programación usarlo (especialmente si está desarrollando una aplicación web, donde la salida se mezclaría en el html de la página de salida).

Las funciones como mysql_connect devuelven un identificador de recursos, o FALSE en los errores. Use @mysql_connect (...) y verifique el valor de retorno.

0

Prefijo de una función con el símbolo a deja de desencadenar el controlador de error PHP si se produce un error. Tenga en cuenta que debe hacer todo el manejo del error usted mismo si decide usarlo.

$test = @file_get_contents('nonexistant.file'); 
if(!$test) 
{ 
    die('Failed'); 
} 

Una mejor práctica es convertir display_errors fuera de uso y controladores de errores personalizada (véase Error Exception).

1

Suprime cualquier error que de otro modo podría producirse.

Es una receta para el dolor y las dificultades, ya que inevitablemente ocasiona dificultades cuando se produce un error, está obligado a pasar horas buscando la causa. Si el operador @ no se hubiera utilizado, el error se habría encontrado en segundos.

No hay una buena razón para usarlo, use los ajustes display_errors y error_log ini para evitar que los errores se muestren en un sitio en vivo, y permita que se muestren en su sitio de desarrollo.

Si hay un error que no desea ver, ¡es mejor que lo solucione solo que suprimiéndolo!

Si se trata de algo en una lib externa y fuera de su control, solo escríbalo en los registros, apague display_errors en la producción y viva con él. Porque no se sabe si el error que estás suprimiendo ahora y con el que estarás feliz de vivir SIEMPRE será el error que se genere desde allí.

@ === BAD

0

A veces se útil- especialmente si el administrador no quiere que usted juegue con el medio ambiente php o el valor no es importante y es principalmente cosméticos.Recuerda, sin embargo; es una solución, no una panacea.

[...]

.$foutDate = @filemtime($keyring); /* Don't care, as we've already established file */ 

$f["date"] = $foutDate; 

$f["fullDate"] = date("r", $foutDate); 

[...]