PHP:¿Para qué sirve anteponer el arroba (@) a una sentencia?
De Foros del Web
Evita se muestre el mensaje de error si lo hay.
Es tema recurrente que, viendo scripts ajenos, se encuentre con un arroba antes de una función y no se sepa el motivo. Pues como respondí arriba, la función de esto es evitar que se muestre el mensaje de error devuelto por PHP en caso que lo hubiese.
Probemos creando un archivo con una sentencia errónea:
Código PHP:
<?php mysql_connect(); // faltan parámetros echo "Esto es una prueba"; ?>
Esto mostraría algo como:
Cita:
Warning: mysql_connect(): Acceso negado para usuario: 'ODBC'@'localhost' (Usando clave: NO) in ruta/del/archivo.php on line 2 Esto es una prueba
En efecto hay un error, faltan los parámetros para establecer la conexión.
Ahora veamos el mismo ejemplo pero con la arroba antepuesta a la función que provoca el error:
Código PHP:
<?php @mysql_connect(); // faltan parámetros echo "Esto es una prueba"; ?>
Nos debería mostrar solo el texto correspondiente a "Esto es una prueba". El error persiste, solo evitamos el mensaje. La utilidad de esto es evitar estos mensajes en una aplicación terminada; no deben interezarle al usuario final, puede confundirlo.
Cabe decir (al margen de esta FAQ) que hay maneras de controlar de manera "global" los mensajes de error que han de ser mostrados, véase el uso de la función error_reporting().
--jam1138 14 Feb 2006
Este artículo es parte de las FAQs de PHP y el Manual de PHP.
- Indice de las FAQs: Conceptos, Configuración, Formularios, Manejo de Archivos, Integración con Bases de Datos, Sesiones, Extensiones y Librerías, Seguridad, Funciones, Clases y Objetos, Frameworks
- Recomendamos también: Guía Zend, Frameworks PHP, Aceleradores PHP
- Agregar al FAQ: PHP: Instrucciones para agregar una pregunta al FAQ de PHP
- Para preguntas sobre PHP: Foro de Php
