Estoy trabajando en una clase de contenedor API, que es la primera que he hecho. En su mayor parte, no ha sido demasiado difícil. Llegando al punto en el que tengo que lidiar con el potencial de los errores que devuelve la API, sin embargo, confundido en cuanto a cómo debo tratar con ellos.¿Cuándo debería lanzar una excepción en lugar de devolver un error en PHP?
un archivo externo hará una llamada a la API clase, es decir, findVenueByLocationID($locationID);
Esta función se va a crear la dirección URL y el método de llamada a la API (POST, GET, DELETE, etc.) y pasar eso a una función llamada makeCall.
MakeCall construye la URL completa, envía la solicitud al servicio y devuelve el XML resultante. Si la API devuelve un error, está dentro del XML que devuelve. La URL se llama utilizando la función file_get_contents(). La API tiene un número establecido de códigos de error que devolverá en el XML.
Como yo lo entiendo, yo debería hacer lo siguiente durante la función makeCall:
- Antes se devuelve el XML, comprobar para ver si contiene un código de error, y si es así, sucedió que a un error manejando la clase para lidiar con el error. (Inicie sesión y devuelva el mensaje de error de la versión del cliente)
- agregue un intento de capturar la función file_get_contents() para detectar los errores de conexión, es decir, no poder acceder al servidor?
¿Se considera esta la mejor manera de hacer las cosas? ¿Debo agregar una captura de prueba en la llamada a makeCall en lugar de dentro de file_get_contents? ¿Debo lanzar una excepción para cada error devuelto por el XML y manejarlos con una clase de error?
El tipo de respuesta que estoy buscando también debe contener un enlace a un recurso que explique algunas de las mejores prácticas relacionadas con el manejo de errores con envoltorios de API o cosas por el estilo.
Gracias de antemano por su tiempo y respuestas.
EDIT: Después de hablar con nuestro director de tecnología, los errores en PHP a la versión actual de excepciones, y que debería lanzar excepciones y dejar el reparto de las excepciones a la persona que llama. Recuerde, estoy implementando una clase contenedora para una API. ¿Pensamientos?
'file_get_contents()' desencadena advertencias si no puede recuperar o leer el recurso, por lo que un try ... catch no lo ayudará. Si usa una clase como 'Zend_Http_Client', podrá interceptar fallas más fácilmente. –