¿Personalizar un PHP E_WARNING?

Esta semana una estudiante del curso de PHP guay ha planteado una cuestión muy concreta que nos ha servido para repasar varias cosas: “Me gustaría que al hacer el include de un archivo que no existe en el sistema de ficheros, PHP no lanzara ningún Warning y mostrara un mensaje personalizado de error en la pantalla. ¿Cómo puedo hacer eso?“.

Por si no lo sabes, include devuelve un valor booleano: true o false. Si la sentencia consigue encontrar el archivo, entonces todo va bien y devuelve true. En cambio, si hay algún problema y el archivo no se puede incluir, include devuelve false y lanza un E_WARNING, y el intérprete continúa la ejecución del script.

Por otro lado, PHP tiene el operador de control de errores arroba, @, que sirve para ignorar cualquier mensaje de error que pueda ser generado. Solo hay que anteponer la arroba a la expresión que pueda lanzar el mensaje de error que queremos ignorar.

Finalmente, tal y como explica el manual de PHP, si la directiva de configuración track_errors está activada, el mensaje de error generado por la expresión se guardará en la variable $php_errormsg.

Esta es una solución al problema que planteó esta alumna de PHP guay:

Fíjate que hemos puesto este mensaje informativo en broma: Hola abuelita e hijitos. Yo, PHP, no he conseguido incluir un archivo. ¿Qué os parece?. Déjame explicarte por qué. Sin darnos cuenta hemos ido a parar a un tema muy importante y extenso, la usabilidad.

¿Te imaginas a tu abuela reaccionando frente a este mensaje? ¿O qué harán tus hijos ante un mensaje que dice que ha habido un error en el momento de incluir un archivo? Realmente, a nadie que no sea un geek como tú y como yo, le importa esto. A nadie le interesa saber qué sucede en los entresijos de la ejecución de 1 script PHP.

Personalizar el E_WARNING de antes para hacerlo amigable a los usuarios es un error de usabilidad. Posiblemente, la persona que planteó esta duda inicialmente lo hizo porque quería personalizar otro tipo de mensajes.

¿Qué es la usabilidad?

La usabilidad hace referencia a la sencillez y eficiencia con que se utilizan las cosas. Una GUI es fácil de usar cuando se puede aprender a utilizar fácilmente, y cuando el usuario que interactúa con la interfaz siente que puede hacer las cosas eficientemente, y rápidamente, sin frustrarse; por ejemplo, sacar dinero de un cajero automático, hacer un pedido en la máquina de un restaurante de comida rápida, etc. En general, cuando la GUI es usable el usuario no se da cuenta de ello, y le gusta utilizar dicho sistema.

¿Cuándo tenemos que personalizar los mensajes de error?

Otra cosa muy diferente es personalizar los mensajes informativos de error que produce el usuario cuando interactúa con un formulario HTML.

Por ejemplo:

  • Cuando introduce una dirección de correo electrónico sin la arroba.
  • Cuando se equivoca y escribe un número de teléfono con dos cifras menos.

Entonces sí que imprimiremos un mensaje informativo en el mismo formulario HTML, indicando al usuario que…

  • El formato del email que escribió no es correcto.
  • El formato del número de teléfono que escribió no es correcto.

Pero como digo, esto ya es entrar en otro tema. Tendríamos que programar en PHP una lógica de validación de formularios, o bien importar algún componente desarrollado por un tercero que solucione este problema.

Conclusión

El ejercicio de PHP de hoy ha estado muy bien para conocer algunos aspectos técnicos de este lenguaje de programación, y para convertirnos en todos unos expertos PHP. Pero recuerda, no debemos personalizar los E_WARNING pensando en los usuarios, porque esos errores ocurren como consecuencia de un problema que ha sucedido en el flujo de ejecución del programa. ¡Los usuarios no quieren saber nada de E_WARNING!

1 comentario

¿Me dejas un comentario? ¡Gracias!

Deja un comentario

Los campos obligatorios están marcados con *